【问题标题】:CORS configuration in AWS API GatewayAWS API Gateway 中的 CORS 配置
【发布时间】:2018-07-13 23:07:25
【问题描述】:

我正在为我的一个应用程序使用 AWS API Gateway 和 Lambda 函数。

当我向 API Gateway 发送 POST 请求时,会导致错误:

“Access-Control-Allow-Origin”标头出现在请求的 资源。因此不允许使用原点“http://localhost:8888” 使用权。响应的 HTTP 状态代码为 400

我在 API Gateway 控制台中启用了 CORS,并将“Access-Control-Allow-Origin”添加到“Access-Control-Allow-Headers”并单击“启用 CORS 并替换现有的 CORS 标头”按钮。成功了。

但是当我重新加载页面时,我发现“Access-Control-Allow-Headers”中没有“Access-Control-Allow-Headers”标头。

我不知道为什么 AWS 不允许我编辑“Access-Control-Allow-Headers”。

【问题讨论】:

标签: amazon-web-services cors aws-lambda aws-api-gateway


【解决方案1】:

我在 API Gateway 控制台中启用了 CORS,并将“Access-Control-Allow-Origin”添加到“Access-Control-Allow-Headers”,然后单击“启用 CORS 并替换现有的 CORS 标头”按钮。成功了。

好的,这是两个完全独立的标题。 Access-Control-Allow-Origin 是一个响应标头,必须发送它以响应预检 OPTIONS 请求和实际的 POST/GET 请求。 Access-Control-Allow-Headers 是一个单独的响应标头,仅在响应预检 OPTIONS 请求时发送。

您能否提供一个屏幕截图,准确显示您在哪里输入的内容?

【讨论】:

    【解决方案2】:

    我刚刚在 AWS Gateway 中为我的两个 API 启用了 CORS。

    即使在网关 API CORS 设置中启用了 CORS,由于这些原因,我也遇到了 CORS 问题。

    1. CORS 设置:这是起点。在 API Gateway 上的 CORS 设置中,允许您使用 CORS。 在调试 CORS 问题之前,您可以保留限制最少的设置,如下所示。 Access-Control-Allow-Origin=*

    访问控制允许方法:POST、GET、OPTIONS、DELETE (您甚至可以在调试期间添加所有标题)

    Access-Control-Max-Age=0

    Access-Control-Expose-Headers,Access-Control-Allow-Headers 可以保留为默认值。

    1. Null Origin:对于本地开发,我直接从文件系统运行我的前端应用程序,而没有 Web 服务器。 AWS CORS 设置不支持空源。然后我在 nodejs http-server 上托管了我的本地应用程序。现在应用程序具有原始 localhost。而且 CORS 设置在我的一个 API 上运行良好。

    2. API 路径必须匹配。对于第二个 API,我仍然面临 CORS 问题。尽管具有与其他 API 相同的设置并托管在 Web 服务器上。这里的问题是这个 API 在根有集成,在这种情况下,API 必须以 / 结尾。我只关注问题出在其他地方的 CORS 设置,这很烦人。

    如果 CORS 设置不适合您,您可能需要实现根 OPTION 并返回正确的 CORS 标头。

    【讨论】:

      猜你喜欢
      • 2017-09-19
      • 2020-10-25
      • 2018-01-13
      • 1970-01-01
      • 2019-09-24
      • 2019-01-07
      • 2021-09-15
      • 2018-08-21
      • 2020-06-05
      相关资源
      最近更新 更多