我正在为我的某个应用程序使用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"。
答案 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问题。
允许访问的控制方法:POST,GET,OPTIONS,DELETE (您甚至可以在调试过程中在此处添加所有标头)
Access-Control-Max-Age = 0
Access-Control-Expose-Headers和Access-Control-Allow-Header可能保留为默认值。
空来源:对于本地开发,我直接从文件系统运行前端应用程序,而没有Web服务器。 AWS CORS设置不支持空原点。然后,我将本地应用程序托管在nodejs http-server上。现在,该应用程序具有原始本地主机。而且,CORS设置在我的一种API上都可以正常工作。
API路径必须匹配。对于第二个API,我仍然面临CORS问题。尽管具有与其他API相同的设置并托管在Web服务器上。这里的问题是此API在根目录具有集成,在这种情况下,API必须以/结尾。非常烦人的是,我只关注问题出在其他地方的CORS设置。
如果CORS设置不适合您,则您可能需要实施root OPTION并返回正确的CORS标头。