ローカルホストのGoogleクラウドストレージからAJAX経由でファイルを取得しようとしています。Google Cloud Storageがアクセス制御元のヘッダーを無視しています
gsutilを介して、私のバケットのためのCORSを設定します:私は、次のように行っているcors.jsonファイルがある
gsutil cors set cors.json gs://my-project
:私はgsutil cors get gs://my-project
[
{
"origin": [
"*"
],
"responseHeader": ["Origin", "Accept", "X-Requested-With", "Authorization", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token"],
"method": [
"GET",
"OPTIONS"
],
"maxAgeSeconds": 1
}
]
ファイルごとに、ファイルをアップロードするときにnode.jsクライアントライブラリからパブリックにしました。
コンソールからbucket.file(object.name).makePublic()
、およびgsutilの通過:
gsutil -m acl set -R -a public-read gs://my-project
その後、私のAjaxリクエストで、私もヘッダーを送信:
$.ajax({
method: "GET",
url: "https://googleapis.com/storage/v1/b/my-project/o?delimiter=audio",
headers: {
'Access-Control-Allow-Origin': '*'
},
crossDomain: true,
}).done((data) => {
console.log(data)
})
と私はまだ取得コルスエラー:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:3000 ' is therefore not allowed access.
CORSを取得するにはどうすればよいですか?
非常に参考になった回答 - ありがとうございました! – mheavers
エンドポイントのフォーマットは次のとおりです:「storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]」は、「www.storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]」に変更するという意味ですか? – KevinHu
storage.googleapis.com/BUCKET/OBJECTは問題ありません。 –