headers - Firebase Storage y Access-Control-Allow-Origin
google storage cors (3)
De esta publicación en firebase-talk group / list :
La forma más fácil de configurar sus datos para CORS es con la herramienta de línea de comando
gsutil
. Las instrucciones de instalación paragsutil
están disponibles en https://cloud.google.com/storage/docs/gsutil_install . Una vez que haya instaladogsutil
y autenticado con él, puede usarlo para configurar CORS.Por ejemplo, si solo desea permitir descargas de objetos de su dominio personalizado, coloque estos datos en un archivo llamado cors.json (reemplazando
"https://example.com"
con su dominio):
[ { "origin": ["https://example.com"], "method": ["GET"], "maxAgeSeconds": 3600 } ]
Luego, ejecute este comando (reemplazando
"exampleproject.appspot.com"
con el nombre de su depósito):
gsutil cors set cors.json gs://exampleproject.appspot.com
y deberías estar listo.
Si necesita una configuración CORS más complicada, consulte los documentos en https://cloud.google.com/storage/docs/cross-origin#Configuring-CORS-on-a-Bucket .
Estoy tratando de descargar archivos de Firebase Storage a través de XMLHttpRequest, pero Access-Control-Allow-Origin no está configurado en el recurso, por lo que no es posible. ¿Hay alguna forma de configurar este encabezado en el servidor de almacenamiento?
(let [xhr (js/XMLHttpRequest.)]
(.open xhr "GET" url)
(aset xhr "responseType" "arraybuffer")
(aset xhr "onload" #(js/console.log "bin" (.-response xhr)))
(.send xhr)))
Mensaje de error de Chrome:
XMLHttpRequest no puede cargar https://firebasestorage.googleapis.com/[EDITED] No hay encabezado ''Access-Control-Allow-Origin'' en el recurso solicitado. Por lo tanto, el origen '' http: // localhost: 3449 '' no tiene acceso permitido.
Otro enfoque para hacerlo es utilizar la API de Google JSON. paso 1: obtenga el token de acceso para usar con la API JSON Para obtener un token, vaya a: https://developers.google.com/oauthplayground/ Luego busque la API JSON o Storage Seleccione las opciones requeridas, es decir, leer, escribir, acceso completo (marque esas que son necesarios) Siga el proceso para obtener el token de acceso, que será válido durante una hora. Paso 2: use el token para presionar la API de Google JSON para actualizar CORS
Curl de muestra:
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"
]
}
]
}''
Solo quiero agregar a la respuesta.
Simplemente vaya a su proyecto en la consola de google (console.cloud.google.com/home) y seleccione su proyecto.
Abra el terminal y simplemente cree el archivo cors.json (
touch cors.json
) y luego siga la respuesta y edite este archivo (
vim cors.json
) como lo sugiere @ frank-van-puffelen
Esto funcionó para mí. ¡Salud!