2016-08-04 72 views
0

我想通過Cloudfront從AWS S3獲取對象,但我遇到了CORS問題。AWS S3不返回起源作爲訪問控制 - 允許 - 起源值

據我瞭解,我向Cloudfront的請求包含一個標題爲Origin的標題,它告訴服務器請求來自哪裏。當Cloudfront請求對象時,S3會根據S3的CORS配置返回對象以及標頭。這些頭文件中有Access-Control-Allow-Origin,它向瀏覽器指定哪些來源可以訪問該對象。

我的問題是,我需要支持動態子域在我CORS的配置,所以我在S3配置CORS像這樣:

<AllowedOrigin>*</AllowedOrigin> 

但自從我使用Access-Control-Allow-Credentials: true頭,通配符不允許的。

現在,根據this article,其中指出:

換句話說,有2種方式的資源與多個起源共享:

  1. 服務器在HTTP響應報頭
  2. 返回 Access-Control-Allow-Origin: *
  3. 服務器根據HTTP請求標頭中指定的Origin動態生成Access-Control-Allow-Origin(這是S3所做的)

S3應該能夠看我的Origin頭,回到它的價值Access-Control-Allow-Origin,從而防止有關通配符的任何錯誤。但是我從S3那裏得到的是Access-Control-Allow-Origin: *

如何讓S3將我的Origin鏡像爲Access-Control-Allow-Origin的值?

這篇文章有點舊,所以我想S3自2013年以來更新了他們如何處理這些頭文件,但是還有辦法做到這一點嗎?

注:這是使用AWS-SDK-V2紅寶石

回答

1

Rails應用程序我找到了答案在another question here。 S3已經更新了它的工作方式,現在您必須使用以下配置讓S3鏡像您的Origin

<AllowedOrigin>http://*</AllowedOrigin> 
<AllowedOrigin>https://*</AllowedOrigin> 
相關問題