XMLHttpRequestを使用してFirebase Storageからファイルをダウンロードしようとしていますが、Access-Control-Allow-Originがリソースに設定されていないため、できません。ストレージサーバーにこのヘッダーを設定する方法はありますか?
(let [xhr (js/XMLHttpRequest.)]
(.open xhr "GET" url)
(aset xhr "responseType" "arraybuffer")
(aset xhr "onload" #(js/console.log "bin" (.-response xhr)))
(.send xhr)))
Chromeエラーメッセージ:
XMLHttpRequestをロードできません https://firebasestorage.googleapis.com/ [EDITED] 要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン ' http:// localhost:3449 'はアクセスを許可されていません。
これから firebase-talkグループ/リストに投稿 :
CORS用にデータを設定する最も簡単な方法は、
gsutil
コマンドラインツールを使用することです。gsutil
のインストール手順は https://cloud.google.com/storage/docs/gsutil_install で入手できます。gsutil
をインストールし、それで認証したら、それを使用してCORSを構成できます。たとえば、カスタムドメインからのオブジェクトのダウンロードのみを許可する場合は、このデータをcors.jsonという名前のファイルに配置します(
"https://example.com"
をドメインに置き換えます)。[ { "Origin": ["https://example.com"], "method": ["GET"], "maxAgeSeconds": 3600 } ]
次に、次のコマンドを実行します(
"exampleproject.appspot.com"
をバケットの名前に置き換えます):gsutil cors set cors.json gs://exampleproject.appspot.com
設定する必要があります。
より複雑なCORS設定が必要な場合は、 https://cloud.google.com/storage/docs/cross-Origin#Configuring-CORS-on-a-Bucket のドキュメントをご覧ください。
答えに加えたいだけです。 Googleコンソール(console.cloud.google.com/home)でプロジェクトに移動し、プロジェクトを選択するだけです。そこでターミナルを開き、cors.jsonファイル(touch cors.json
)を作成し、回答に従って@ frank-van-puffelenの提案に従ってこのファイル(vim cors.json
)を編集します。
これは私のために働いた。乾杯!
これを行う別のアプローチは、Google JSON APIを使用することです。ステップ1:JSON APIで使用するアクセストークンを取得するトークンの使用を取得するには、 https://developers.google.com/oauthplayground/ に移動しますJSON APIまたはストレージの検索必要なオプション(read、write、full_accessを選択)を選択します(必要なオプションを選択します)。プロセスに従って、1時間有効なアクセストークンを取得します。ステップ2:トークンを使用してGoogle JSON APIをヒットしてCORSを更新する
サンプルカール:
curl -X PATCH \
'https://www.googleapis.com/storage/v1/b/your_bucket_id?fields=cors' \
-H 'Accept: application/json' \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Authorization: Bearer ya29.GltIB3rTqQ2tJgh0cMj1SEa1UgQNJnTMXUjMlMIRGG-mBCbiUO0wqdDuEpnPD6cbkcr1CuLItuhaNCTJYhv2ZKjK7yqyIHNgkCBup-T8Z1B1RiBrCgcgliHOGFDz' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: d19f29ed-2e80-4c34-85ee-c46c9058fac0' \
-H 'cache-control: no-cache' \
-d '{
"location": "us",
"storageClass": "Standard",
"cors": [
{
"maxAgeSeconds": "360000000",
"method": [
"GET",
"HEAD",
"DELETE"
],
"Origin": [
"*"
],
"responseHeader":[
"Content-Type"
]
}
]
}'