Firebase Storage и Access-Control-Allow-Origin
Я пытаюсь загрузить файлы из Firebase Storage через XMLHttpRequest, но 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 'поэтому не допускается доступ.
Ответы
Ответ 1
Из этого сообщения в группе/списке фанеры-головоломки:
Самый простой способ настроить ваши данные для 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.
Ответ 2
Просто хочу добавить в ответ. Просто зайдите в свой проект в консоли Google (console.cloud.google.com/home) и выберите свой проект. Там откройте терминал и просто создайте файл cors.json(touch cors.json
), а затем следуйте ответу и отредактируйте этот файл (vim cors.json
) в соответствии с предложением @frank-van-puffelen.
Это сработало для меня. Ура!
Ответ 3
Другой подход для этого - использование Google JSON API. шаг 1: получить маркер доступа для использования с JSON API, чтобы получить маркер использования перейдите по ссылке: https://developers.google.com/oauthplayground/ Тогда поиск JSON API или хранения Выберите необходимые параметры, т.е. чтение, запись, full_access (отметьте те, которые необходимы) Следуйте процессу, чтобы получить токен доступа, который будет действителен в течение часа. Шаг 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"
]
}
]
}'