【问题标题】:How can I avoid Same Origin Policy exception when using AWS API Gateway and CloudFront使用 AWS API Gateway 和 CloudFront 时如何避免同源策略异常
【发布时间】:2018-04-01 01:39:26
【问题描述】:

我有一个 SPA(前面是 CloundFront),它调用我在 APIGateway 上设置的 GET 端点。 spa 的域与 API 网关的域不同。当我的 SPA 尝试对资源执行 GET 操作时,我得到了如下所示的同源策略异常

 "No Access-Control-Allow-Origin header is present on requested resource"

这是我在 API Gateway 上的设置。我有一个 Options 资源,它返回以下内容

Access-Control-Allow-Methods: 'GET, OPTIONS'
Access-Control-Allow-Headers: 'Content-Type,X-Api-Key,X-Requested-With'
Access-Control-Origin: '*'

我有一个 Get Resource,它反过来调用我的后端服务(我的服务的代理)。我已设置资源以将这些标头作为响应的一部分返回

Access-Control-Allow-Headers
Access-Control-Allow-Methods
Access-Control-Allow-Origin

浏览器的选项调用返回 200,并带有所有必要的访问控制内容。但是当浏览器进行 GET 调用时,我得到了相同的源策略异常。有什么想法吗?是因为我的 GET 响应没有明确设置 Access-Control-Origin 的值吗?

谢谢 凯

【问题讨论】:

    标签: amazon-cloudfront aws-api-gateway api-gateway


    【解决方案1】:

    我有一个 Options 资源,它返回以下内容

    您需要的标头是 Access-Control-Allow-Origin: '*'。

    但是,是的,您确实需要退回它,因为简单的GET 不会做飞行前OPTIONS *

    【讨论】:

    • 如何在 API Gateway 中添加这个?我的 GET 资源只是对我的后端的请求,并按原样返回来自我的后端的响应。我没有看到在 API Gateway 中修改传出响应标头的方法
    • 您的答案是正确的,因为我必须添加值为 * 的 Access-Control-Allow-Origin 标头。对于在使用 AWS API Gateway 时遇到相同问题的其他人 - 如果您使用 API Gateway 代理您的后端服务,您将无法修改从您的 api 返回的响应。 “集成响应”将显示为灰色。另一方面,如果您选择不代理,则可以修改来自您的 api 的响应
    猜你喜欢
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2020-01-06
    • 2017-08-10
    • 2021-08-24
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多