webpackを使用してdevサーバを実行すると、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のdevのサーバーの設定に設定されているヘッダーを持っている:
: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: *
ヘッダーがあり、エラーが欠落していると思われる場合は、承認のようなものになる可能性がありますか?
実際にヘッダーが設定されている場合、ヘッダーが実際に存在する場合、次のステップは何ですか?
UPDATES ****
1:私は、ヘッダーのが不満をS3にはならないと考えているもののS3に設定CORSを追加する:
<?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:これは働いた:マークされた答えによって与えられたURLから
<?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>
S3バケットのCORS設定が要求をブロックしていることを訴えています。あなたのdevサーバのCORS設定とは無関係です。以下の回答のリンクに従って、S3バケットにCORSを設定する必要があります。 –
@マークB idは、そのエラーメッセージを正しく読む方法を学ぶことに興味があります。それの私の読書は全く異なっている。私はそれが明快さの必要性を持っていることに同意しない限り、将来私を助けるだろうと思う。 –
これは、エラーメッセージの文言とはあまり関係がなく、CORSの仕組みをより深く理解しています。別のドメインでホストされているWebページに何かを含めると、ブラウザはドメインに到達して、(CORSヘッダーを確認して)自分のコンテンツをWebページに含めることができるかどうかを確認します。 CORSはブラウザに他のドメインをあなたのページに表示できるかどうかを知らせるのではなく、他のドメインがあなたのコンテンツを含むことができるかどうかについてブラウザに伝えています。したがって、サーバーのCORS設定は、あなたが持っていた問題とは無関係でした.S3で設定する必要がありました。 –