2017-10-19 111 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的響應 –