虽然已经通过API Gateway设置了CORS,并且设置了Access-Control-Allow-Origin
头部,但在Chrome内部尝试从AJAX调用接口时,仍然收到以下错误:
XMLHttpRequest无法加载http://XXXXX.execute-api.us-west-2.amazonaws.com/beta/YYYYY。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源'null‘。响应的HTTP状态代码为403。
我尝试通过Postman获取URL,结果显示上面的报头已成功传递:
从OPTIONS reponse:
如何在不恢复到JSON-P的情况下从浏览器调用API?
发布于 2017-03-26 20:56:51
我也有同样的问题。我已经用了10个小时来找出答案。
https://serverless.com/framework/docs/providers/aws/events/apigateway/
// handler.js
'use strict';
module.exports.hello = function(event, context, callback) {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*", // Required for CORS support to work
"Access-Control-Allow-Credentials" : true // Required for cookies, authorization headers with HTTPS
},
body: JSON.stringify({ "message": "Hello World!" })
};
callback(null, response);
};
发布于 2018-02-19 14:46:42
如果还有其他人遇到这个问题--我能够在我的应用程序中找到根本原因。
如果您正在使用自定义Authorizers运行API-Gateway - API-Gateway将在它实际到达您的服务器之前发送回401或403。从自定义授权器返回4xx时,默认没有为CORS配置- API-Gateway。
另外-如果你碰巧从通过API Gateway运行的请求中得到0
或1
的状态码,这可能是你的问题。
要修复-在API网关配置中-转到[网关响应],展开[默认4xx],并在其中添加CORS配置头。即
Access-Control-Allow-Origin: '*'
确保重新部署您的网关-瞧!
发布于 2018-12-04 02:22:48
如果你已经尝试了所有关于这个问题的方法都没有用,那么你就会落得和我一样的下场。事实证明,亚马逊现有的CORS设置方向工作得很好...只要确保你记得重新部署!CORS编辑向导,即使有所有漂亮的绿色复选标记,也不会对API进行实时更新。这可能很明显,但它把我难住了半天。
https://stackoverflow.com/questions/35190615
复制相似问题