【发布时间】:2020-08-17 06:41:09
【问题描述】:
我正在尝试使用 Amazon 的 API 网关和 Lambda 启用 CORS,但我不断收到错误消息。
Access to XMLHttpRequest at 'https://<url>' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我已经关注https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html 并将其添加到 lambda 表达式中:
statusCode : statusCode,
body: responseBody,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
}
我还访问了 API 网关并单击了启用 CORS 按钮。如果我查看 API 网关中的选项,它会说
Access-Control-Allow-Headers
存在
如果我在 API 网关上运行测试,我可以看到 lambda 表达式返回的标头和预期的标头都在那里,但我仍然收到相同的错误消息。
编辑: Logwatch 没有打印任何东西,所以我假设它甚至没有进入我的 lambda 函数。
我可以从 POSTMAN 成功访问 API,并且它具有 CORS 标头
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: OPTIONS,POST,GET
这是我在 chrome 中尝试时得到的响应标头。
content-length: 35
content-type: application/json
date: Sun, 03 May 2020 01:51:15 GMT
status: 400
x-amz-apigw-id: L7p_IEbuoAMFeaA=
x-amzn-errortype: BadRequestException
x-amzn-requestid: 7ed06b7d-951f-4774-9bfa-62f307ee5974
【问题讨论】:
-
选项中的其他标题怎么样,不仅仅是
Access-Control-Allow-Headers。还有你用什么方法,。如果ANY则需要 special treatment:“代理集成中的任何方法,都不会设置任何适用的 CORS 标头。” -
我只是在使用 POST。 API 网关的方法响应部分说它具有以下 200 的标头。名称 Access-Control-Allow-Headers Access-Control-Allow-Methods Access-Control-Allow-Origin