【问题标题】:How to enable CORS in AWS API Gateway如何在 AWS API Gateway 中启用 CORS
【发布时间】: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

标签: amazon-web-services cors


【解决方案1】:

问题是我从 UI 错误地发布了数据,因此模型验证失败。在我禁用身体验证后,它开始正常工作。

看到这个问题: AWS API Gateway - CORS + POST not working

【讨论】:

  • 诀窍是不要 JSON.stringify() 正文。
猜你喜欢
  • 2021-03-08
  • 2021-09-15
  • 2019-12-30
  • 2019-03-08
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
  • 2018-02-21
相关资源
最近更新 更多