使用 AWS API 网关和 CloudFront 时如何避免同源策略异常

How can I avoid Same Origin Policy exception when using AWS API Gateway and CloudFront

我有一个 SPA(由 CloundFront 提供),它调用我在 APIGateway 上设置的 GET 端点。水疗中心的域与 API 网关的域不同。当我的 SPA 尝试对资源执行 GET 操作时,出现如下同源策略异常

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

这是我在 API 网关上的设置。我有一个选项资源 return 如下

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

我有一个获取资源,它又调用我的后端服务(我的服务的代理)。我已将资源设置为 return 这些 headers 作为响应的一部分

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

浏览器的选项在 200 中调用 returns,其中包含所有必要的访问控制内容。但是当浏览器进行 GET 调用时,我得到同源策略异常。任何想法这里发生了什么?是因为我的 GET 响应没有明确设置 Access-Control-Origin 的值吗?

谢谢 凯

I have an Options resource which returns the following

你需要的header是Access-Control-Allow-Origin: '*'.

但是,是的,您确实需要 return 它,因为简单的 GET 不会执行 pre-flight OPTIONS *.