使用webpack運行開發服務器,我試圖列出S3存儲桶中的項目,並在瀏覽器中使用javascript aws-sdk控制檯輸出結果。aws-sdk抱怨實際存在的cors頭缺失
這樣做時,我得到這個錯誤:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://bucketname.s3.amazonaws.com/?list-type=2&max-keys=2. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
但是我有一個頭在的WebPack開發服務器的配置設置,以證明:
curl -I http://localhost:8080
HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, content-type, Authorization
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8
Content-Length: 7170
Vary: Accept-Encoding
Date: Sat, 02 Dec 2017 16:15:04 GMT
Connection: keep-alive
所以,我想*的一切:
HTTP/1.1 404 Not Found
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
Access-Control-Allow-Headers: *
如果標題在那裏,錯誤是說它的缺失,它可以是授權的東西嗎?
如果它確實是標題設置,如果標題實際存在,下一步是什麼?
最新通報****
1:添加CORS S3上設置,雖然我相信它的頭抱怨不會在S3:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
也鬥不公開或啓用靜態主機。
2:這工作:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
從URL被標記的答案給出
它抱怨在S3桶CORS設定阻塞該請求。它與你的dev服務器上的CORS配置無關。您需要在下面的答案中的鏈接之後,在S3存儲桶上配置CORS。 –
@MarkB id有興趣學習如何正確讀取錯誤信息。我對它的閱讀完全不同。我認爲這將在未來幫助我,除非您同意它有明確的需求。 –
它與錯誤信息中的措辭較少有關,更多與理解CORS的工作方式有關。當您在託管在另一個域中的網頁中包含某些內容時,瀏覽器會向域中查看是否可以將它們的內容包含在網頁中(通過檢查CORS標頭)。 CORS不是告訴瀏覽器哪些域可以顯示在你的頁面中,CORS是告訴瀏覽器其他域是否可以包含你的內容。因此,您的服務器的CORS配置與您遇到的問題無關,必須在S3上進行配置。 –