我有一个Flask应用程序,只有应用程序引擎项目的管理员才能使用以下应用程序访问它。yaml:
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: app.py
secure: always
login: admin
在我的应用程序中,我有一个endpoint,它只是返回一些JSON:
@app.route('/api/v1/data')
def api():
return jsonify(data)
在我的前端,我尝试用Javascript获取JSON数据(当我运行“普通”flask服务器时,它工作得非常好):
fetch('/api/v1/data')
.then(function (response) {
console.log(response)
return response.json();
}).then(function (myData) {
doSomethingWithData(myData);
});
但是,我无法获取数据。使用本地服务器时,出现以下错误:
(index):1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
响应似乎说我没有登录,并在控制台日志中给我一个url(注意:我没有在任何地方添加任何类型的回调,我认为这来自用户API):
http://127.0.0.1:5000/_ah/login?continue=http%3A//127.0.0.1%3A5000/api/v1/data
在部署的应用程序上,我得到:
Fetch API cannot load https://www.google.com/accounts/ServiceLogin?service=ah&passive=true&contin....
Redirect from 'https://www.google.com/accounts/ServiceLogin?service=ah&passive=true&contin...'
to 'https://accounts.google.com/ServiceLogin?service=ah&passive=true&continue=...'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the
requested resource. Origin 'https://....appspot.com' is therefore not allowed access.
If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the
resource with CORS disabled.
我尝试将CORS添加到fetch调用和flask响应中,但没有成功。在谷歌上也找不到任何关于它的信息,所以任何帮助都将不胜感激!
'
您没有在函数中定义data
,所以这可能是问题所在。你能给我们看一下那个代码吗?
@app.route('/api/v1/data')
def api():
data = ....
return jsonify(data)
并且,对该url的回调将没有管理员权限,因此login: admin
不能在那里使用。尝试:
handlers:
- url: /api/v1/data
script: app.py
#secure: always # if you use this, make sure you specify an https callback url: http://127.0.0.1:5000/_ah/login?continue=https%3A//127.0.0.1%3A5000/api/v1/data (when deployed with production url)
- url: /.*
script: app.py
secure: always
login: admin
然后,继续=https://127.0.0.1:5000/api/v1/data无法从Google API工作,因为他们无法访问您的本地开发服务器。
我在进一步调试后发现了问题。
默认情况下,Javascript获取API不发送Cookie。而且,由于Google App Engine的用户API使用Cookie来登录会话,fetch发出的请求似乎未经验证。要随请求一起发送Cookie,您必须将具有“相同来源”的请求凭据添加到提取调用:
fetch('/api/v1/data', { credentials: 'same-origin' })
问题内容: 遇到了似乎是同源政策的问题,这引起了很多麻烦! 为了追赶,我基本上是在仅提供用户名时尝试获取用户的steam64id。 例如,我的用户名:“ Emperor_Jordan”将转到: http://steamcommunity.com/id/emperor_jordan?xml=1 而我需要的小蒸汽就在顶部。所以我想我将使用JQuery Ajax来获取它并解析出我以后需要使用的id(st
嗨,我正在尝试使用youtube应用程序获取youtube用户名和缩略图。我正在使用v3.0和javascript库。我正在遵循这个示例和文档:https://developers.google.com/youtube/v3/code_samples/javascripthttps://developers.google.com/api-client-library/javascript/refe
我正在Laravel应用程序中使用twitter API。在我的应用程序中,当用户插入url时,我想获得用户名和个人资料图片。我找了很多,但没找到。对于用户信息,我必须让用户登录到twitter,并与我的应用程序连接以获取访问令牌。我只想使用应用程序授权,这样用户就不需要登录twitter。我发现,通过这个搜索API可以搜索带有承载令牌的推文 有什么API可以让我使用URL获取用户屏幕名称吗? 我
我可以使用Stripe API接收客户付款,但我希望它应该使用客户ID发送给其他客户。 我已经编写了接收付款的代码,但我希望付款应使用他的客户ID发送给其他客户。 它应该发送给其他客户,但我不知道要在这里添加哪些其他代码片段。
是不是可以在响应JSON中对结果进行身份验证,而无需任何令牌身份验证?我的项目有两种类型的用户(用户=1和供应商=2)。我需要这两个用户都有不同的页面时,他们登录到我的系统。响应如下: 此用户为普通用户,将进入用户页面,而用户类型为2的其他用户将进入供应商页面。 这是我的密码: 在渲染组件上,当用户成功登录时,我使用重定向转到主页“/主页”: 我想要的是,当userType等于2时,它们将转到供应
这里有个问题(如果你可以这么叫的话),每次我编写包含函数的JS时,它都不起作用。我知道这和空格、换行或诸如此类的东西有关。也许我不知道规则或语法。我正在使用Sublime文本3(如果它是相关的)。如果你向我解释原因,我会很感激,这样我就不会再面临这个问题了。这是一个在我的计算机上不起作用的代码 null null