我有一个通过AWS API Gateway触发的AWS Lambda函数。当我在Lambda上测试我的功能时,它正在工作。当我通过ajax向API URL发送POST请求时,我收到502错误的网关错误。
XMLHttpRequest cannot load https://xxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/myLambdaFunction. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'mywebsite.com' is therefore not allowed access. The response had HTTP status code 502.
显然这是一个CORS问题,所以我想我可以更改我的AWS API网关URL中的CORS设置,但我仍然收到错误。
我需要在AWS方面或我自己更改哪些内容才能发布到网址?
答案 0 :(得分:2)
不幸的是,即使您已通过控制台添加了CORS支持,也存在许多4xx和5xx类错误的已知问题,其中CORS标头将不会被发送。
如评论中所述,CORS错误是您的API返回502这一事实的副作用。如果您使用LAMBDA_PROXY集成类型并从Lambda函数返回无效JSON,则通常会发生这种情况。
请尝试使用控制台中的test invoke functionality或API中的enable logging进一步调试。
答案 1 :(得分:0)
我通过自己输出CORS头解决了同样的问题。 见下文 - 我希望这会有所帮助。 Teebo
function respond(context, responseData) {
var response = {
statusCode: 200,
body: JSON.stringify(responseData),
headers: {
"Content-Type": "application/json; charset=utf-8",
"Access-Control-Allow-Origin": "*"
}
};
context.succeed(response); }