2017-10-19 169 views
0

我有一个SPA(由CloundFront前置)调用我在APIGateway上设置的GET端点。 Spa的域名与API网关的域名不同。当我的SPA尝试在资源上执行GET时,我会得到相同的原始策略例外如何避免使用AWS API Gateway和CloudFront时的同源策略异常

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

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

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

我有一个获取资源,这反过来又要求我的后端服务(代理我的服务)。我已经设置了资源返回这些头作为响应

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

浏览器的选项调用在200返回,与所有必要的访问控制的东西的一部分。但是当浏览器进行GET调用时,我会得到相同的原始策略异常。任何想法最新发生在这里?是否因为我的GET响应没有明确设置Access-Control-Origin的值?

感谢 凯

回答

0

我有一个选项资源返回你需要以下

头部受到访问控制 - 允许 -Origin: '*'。

但是,是的,您确实需要将其退回,因为简单的GET不会执行预先的OPTIONS *

+0

如何在API网关中添加此项?我的GET资源只是对后端的请求,并按原样从我的后端返回响应。我没有看到在API网关 –

+0

中修改传出响应头的方法您的回答是正确的,因为我必须添加值为*的Access-Control-Allow-Origin头。对于使用AWS API Gateway时遇到同样问题的其他人 - 如果您使用API​​网关代理您的后端服务,则无法修改从API返回的响应。 “Integeration Responses”将变为灰色。另一方面,如果您选择不进行代理,则可以修改API的响应 –