2017-05-07 32 views
0

我在自定義域後面的AWS Cloudfront上託管了一些字體。
我曾以此爲S3 CORS政策CORS問題甚至包括原產地政策

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*.dabster.io</AllowedOrigin> 
     <AllowedOrigin>dabster.io</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <AllowedMethod>HEAD</AllowedMethod> 
     <MaxAgeSeconds>3000</MaxAgeSeconds> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

上的Cloudfront行爲我有以下設置

  • 瀏覽器協議政策:HTTP和HTTPS
  • 允許的HTTP方法:GET,HEAD,OPTIONS
  • 轉發頭:白名單
    • 訪問控制請求頭
    • 訪問控制請求法
    • 產地

我得到的錯誤是在 'https://cdn.dabster.io/assets/fonts/fontawesome-webfont.ttf?v=4.7.0' 從原點 'https://dabster.io'

訪問字體有被CORS策略阻止:否 「訪問控制允許來源」標題出現在請求的 資源中。因此不允許訪問原產地'https://dabster.io'。

您可以在https://dabster.io看到錯誤和https://www.dabster.io

curl -I -s -X GET -H "Origin: dabster.io" https://cdn.dabster.io/assets/fonts/fontawesome-webfont.ttf\?v\=4.7.0         

HTTP/1.1 200 OK 
Content-Type: application/octet-stream 
Content-Length: 165548 
Connection: keep-alive 
Date: Sun, 07 May 2017 09:26:57 GMT 
Access-Control-Allow-Origin: dabster.io 
Access-Control-Allow-Methods: GET, HEAD 
Access-Control-Max-Age: 3000 
Access-Control-Allow-Credentials: true 
Last-Modified: Fri, 05 May 2017 14:04:16 GMT 
ETag: "b06871f281fee6b241d60582ae9369b9" 
Accept-Ranges: bytes 
Server: AmazonS3 
Vary: Origin,Access-Control-Request-Headers,Access-Control-Request-Method 
X-Cache: Miss from cloudfront 
Via: 1.1 d674762e43fd40650eec6e201e4316a2.cloudfront.net (CloudFront) 
X-Amz-Cf-Id: JYxW4fs2Ijgt_wEnl-DQ6Yqz_qPYbwaWZSZyRjrnKQ_yje__n3skkA== 

我也湊了響應報頭。 請在這裏說明一下

回答

3

來源值必須包含協議部分https://http://。所以,你需要這樣做:

<AllowedOrigin>https://dabster.io</AllowedOrigin> 

curl測試工作的原因是,你要發送的Origin頭不帶任何協議的一部分。

但瀏覽器發送一個Origin頭與協議部分;例如,Origin: https://dabster.io

所以你現在有事情配置,您curl測試將失敗太多,如果你有協議:

curl -I -s -X GET -H "Origin: https://dabster.io" \ 
    https://cdn.dabster.io/assets/fonts/fontawesome-webfont.ttf\?v\=4.7.0 
+0

好吧,讓我試試這個,看看它是否工作,生病更新相應 –

+0

我進行了更改,並使雲端緩存無效,但對於curl,它也適用於協議。 –

+0

如果您對' https://dabster.io配置進行了更改,那麼如果指定了協議,則預計curl測試現在可以正常工作。但是,你仍然在瀏覽器devtools控制檯中出現「否」Access-Control-Allow-Origin'頭部存在「錯誤?或者,您的網絡應用程序能夠按照預期得到字體? – sideshowbarker