AWS API Gateway

时间:2018-02-03 16:59:25

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

我正在为我的某个应用程序使用AWS API Gateway和Lambda Function。

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

  

'访问控制允许来源'标题出现在请求的上   资源。起源' http://localhost:8888'因此是不允许的   访问。响应的HTTP状态代码为400

我在API网关控制台中启用了CORS,并添加了“访问控制 - 允许 - 来源”#39; to" Access-Control-Allow-Headers"并单击"启用CORS并替换现有的CORS标头"按钮。这是成功的。

但是当我重新加载页面时,我发现了“访问控制允许标题”#39;标题不存在于" Access-Control-Allow-Headers"中。

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

2 个答案:

答案 0 :(得分:2)

  

我在API网关控制台中启用了CORS,并添加了“访问控制 - 允许 - 来源”#39; to" Access-Control-Allow-Headers"并单击"启用CORS并替换现有的CORS标头"按钮。这是成功的。

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

您能否提供截图,准确显示您输入的位置?

答案 1 :(得分:0)

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

即使在Gateway 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-Header可能保留为默认值。

  1. 空来源:对于本地开发,我直接从文件系统运行前端应用程序,而没有Web服务器。 AWS CORS设置不支持空原点。然后,我将本地应用程序托管在nodejs http-server上。现在,该应用程序具有原始本地主机。而且,CORS设置在我的一种API上都可以正常工作。

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

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