过去几天我已经做了一些寻找工作,我无法正确地工作。
我正在使用AngularJS&Webapp2 Python(Google App Engine)。
我正在使用工厂资源:
app.factory('facTest', ['$resource', function ($resource) { return $resource('http://localhost:10080/:route', {}, { GetTest: { method: 'GET', isArray: false, params: { route: "gettest", user_id: '@user_id' } } }) }]);
这个伟大的工作,但WebApp2我需要添加:
self.response.headers['Access-Control-Allow-Origin'] = '*'
或者我也遇到类似的问题。
我的问题是当我试图通过AngularJS发送自定义标题:
$http.defaults.headers.common.Authorization = 'Basic ' + "123454";
当我做我得到错误。 我试图在所有的HTTP调用之前添加一个令牌到头部。
我已经尝试将此添加到python WebApp2
self.response.headers['Access-Control-Allow-Headers'] = 'X-Requested-With, Content-Type, X-Codingpedia, Authorization' self.response.headers['Access-Control-Allow-Methods'] = 'GET, POST, DELETE, PUT, OPTIONS'
我仍然得到同样的错误。
“选项http:// localhost:10080 / gettest?user_id = 1 405(方法不允许)”
“XMLHttpRequest无法加载http:// localhost:10080 / gettest?user_id = 1。对预检请求的响应未通过访问控制检查:请求的资源上没有”Access-Control-Allow-Origin“标头。
任何帮助是极大的赞赏。 我不知道还有什么可以尝试的。
先谢谢了。
突破
我find了一个使它工作的方法。 我不再使用:
{ method: 'GET', isArray: false,
相反,我正在使用:
{ method: 'OPTIONS', isArray: false,
除了python代码:
def options(self):
这让我发送授权标题。
你必须包括:
def options(self, *args, **kwargs): self.response.headers['Access-Control-Allow-Origin'] = '*' self.response.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization' self.response.headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT, DELETE'
添加到你的课堂,包括你的得到。
发生什么事是你的请求会寻找选项。 强化错误,“选项”。