お疲れ様です、ラスカルです。
今回はローカルホストからS3に画像アップロードしようとしたところ、次のようなエラーがでた時の対処法を書いていきます。
Access to XMLHttpRequest at 'https://ほにゃらら.s3.amazonaws.com/?max-keys=0' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
すべきこと
S3にCORS設定を書いてあげます。
S3 > アップロード対象のバケット > アクセス許可タブの最下部にCORS設定を記述するところがあります。
ここが空白になっていて、CORSの設定が書かれていないため、ローカルホストからのアップロードが不正なものとしてリジェクトされているようです。
「編集する」をクリックして、CORS設定を記述してあげます。
ここで注意が必要なのですが、JSONで書かないといけないのにXML形式のサンプルコードしかありません。
公式ドキュメントですらXML形式で表示しています。
🤔最近変わったのでしょうか?
JSONで書くとこのようになります。
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"http://localhost:3000"
],
"ExposeHeaders": []
}
]
これでCORS設定は完璧!
お疲れ様でした🎉。