前回、Google Cloud Storage(GCS)の署名付きURLを作成して、Webサービスから直接アップロードできないか検証していたのですが、GCSにCORSの設定をしてあげないとだめでした。
手順
公式にドキュメントがあったのでそのままです。
クロスオリジン リソース シェアリング(CORS)の設定 | Cloud Storage ドキュメント | Google Cloud
https://cloud.google.com/storage/docs/configuring-cors?hl=ja
バケットの CORS 構成を設定するには、受け入れられるリクエストのタイプを識別する情報(HTTP メソッドや発信元のドメインなど)を指定します。バケットの CORS 構成の設定には、gsutil コマンドライン ツール、XML API、JSON API、Cloud Storage のクライアント ライブラリを使用します。
> touch cors_setting.json
cors_setting.json
[ { "origin": ["http://example.appspot.com"], "responseHeader": ["Content-Type"], "method": ["GET", "HEAD", "DELETE"], "maxAgeSeconds": 3600 } ]
CORSを設定する
> gsutil cors set cors_setting.json gs://[バケット名]
CORSを確認する
> gsutil cors get gs://[バケット名]
参考
クロスオリジン リソース シェアリング(CORS)の設定 | Cloud Storage ドキュメント | Google Cloud
https://cloud.google.com/storage/docs/configuring-cors?hl=ja
FirebaseのHostingとCloud Functionsを利用してStorageからファイルをダウンロードするデモアプリケーション – Qiita
https://qiita.com/rubytomato@github/items/31c6098eb9804d9547ed#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D-1