![](/img/trans.png)
[英]AWS API Gateway No 'Access-Control-Allow-Origin' header is present
[英]Error 'Access-Control-Allow-Origin' using AWS API Gateway
我正在尝试通过 AWS API Gateway 从我的客户端(javascript/浏览器)向我的 API(python/flask)发出$ajax
请求(POST)。 但是,我收到一个错误: No 'Access-Control-Allow-Origin'
。
当我从postman
请求我的 API 时,我没有问题。
我无法在客户端的 ajax 中启用选项jsonp
,因为它根本不起作用。
因此,我尝试在 API Gateway 上启用 cors,但我的路由是http proxy integration
(方法 ANY),因此根据 AWS Docs,我必须在应用程序本身中启用 Cors。 所以,我做到了,但这并没有解决问题。
在我的 python/flask 应用程序中,我添加了这个:
@app.after_request
def add_headers(response):
response.headers.add('Access-Control-Allow-Origin', '*')
response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
return response
但它仍然不起作用。
有什么建议吗?
尝试将有效来源设置为Access-Control-Allow-Origin
标头,而不是使用'*'
。
response.headers.add('Access-Control-Allow-Origin', request.headers.origin)
response.headers.add('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE');
对于大多数标头,值
'*'
仅算作没有凭据的请求(没有HTTP
cookie 或HTTP
身份验证信息的请求)的特殊通配符值。请参阅Access-Control-Allow-Origin 、 Access-Control-Allow-Headers 、 Access-Control-Allow-Methods等。
根据CORS 和缓存,您可能还必须添加以下标头。
response.headers.add('Vary', 'Origin')
此外,您可能必须在使用$.ajax()
提交请求时定义xhrFields.withCredentials: true
。
$.ajax({
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
}
...
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.