Ajax 对AWS API网关访问的POST请求

Ajax 对AWS API网关访问的POST请求,ajax,amazon-web-services,aws-lambda,aws-api-gateway,Ajax,Amazon Web Services,Aws Lambda,Aws Api Gateway,我有一个AWS Lambda函数,它是通过AWS API网关触发的。当我在Lambda上测试我的函数时,它正在工作。当我通过ajax向API url发送POST请求时,我得到一个502错误网关 XMLHttpRequest无法加载https://xxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/myLambdaFunction. 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源代码“mywebs

我有一个AWS Lambda函数,它是通过AWS API网关触发的。当我在Lambda上测试我的函数时,它正在工作。当我通过ajax向API url发送POST请求时,我得到一个502错误网关

XMLHttpRequest无法加载https://xxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/myLambdaFunction. 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源代码“mywebsite.com”。响应的HTTP状态代码为502。

很明显,这是一个CORS问题,所以我想我可以在我的AWS API网关URL中更改CORS设置,我确实这样做了,但是我仍然得到了一个错误


要发布到URL,我必须在AWS端或我自己的端更改什么?

不幸的是,存在一个已知问题,即存在许多4xx和5xx类错误,即使您通过控制台添加了CORS支持,也不会发送CORS头

如注释中所述,CORS错误是API返回502的一个副作用。如果使用LAMBDA_代理集成类型并且从LAMBDA函数返回无效的JSON,则通常会发生这种情况


请尝试从控制台或在API中使用进行进一步调试。

我通过自己输出CORS头解决了完全相同的问题。 见下文——我希望这会有所帮助。 蒂博


更改CORS设置后是否再次部署API网关?有一个CORS错误,但真正的问题可能是502错误。CORS错误似乎是502的副作用,而不是原因。是的,我认为你的权利@Michael sqlbot-无法找出502的原因。日志没有显示发生了什么。嗨,鲍勃!谢谢你的回答。我认为这与Lambda代理和我返回的响应有关-我最终修复了502问题,但无法指出CORS问题仍然困扰着我。实际上,我通过在浏览器中使用JS SDK(我不知道它存在)并在Cognito identity stuff旁边调用函数来解决了这个问题——老实说,它比使用API端点更干净、更简单:)函数response(context,responseData){//var response={statusCode:200,body:JSON.stringify(responseData),标题:{'Content-Type':'application/JSON;charset=utf-8',//'application/JSON','Access-Control-Allow-Origin':'*'}}};context.succeed(response);}//response
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); }