El uso compartido de recursos entre dominios (CORS) permite interacciones entre recursos de diferentes orígenes, algo que por lo general está prohibido para evitar comportamientos maliciosos. Usa este tema para aprender a establecer una configuración de CORS en un bucket de Cloud Storage y cómo ver la configuración de CORS en un bucket. Consulta Ejemplos de configuración para CORS a fin de ver ejemplos de configuración de CORS, incluida la configuración que inhabilita cualquier configuración existente en tu bucket.
Establece la configuración de CORS en un bucket
Debes establecer una configuración de CORS en un bucket mediante la especificación de información, como los métodos HTTP y los dominios de origen, que identifican los tipos de solicitudes que puede aceptar el bucket.
Sigue estos pasos para establecer una configuración de CORS en tu bucket:
Console
No puedes administrar CORS con la consola de Google Cloud. En su lugar, usa la CLI de gcloud.
Línea de comandos
gcloud
Crea un archivo JSON con la configuración de CORS que deseas aplicar. Consulta los ejemplos de configuración para ver archivos JSON de muestra.
Usa el comando
gcloud storage buckets update
con la marca--cors-file
:gcloud storage buckets update gs://BUCKET_NAME --cors-file=CORS_CONFIG_FILE
Aquí:
BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
CORS_CONFIG_FILE
es la ruta de acceso al archivo JSON que creaste en el paso 1.
gsutil
Crea un archivo JSON con la configuración de CORS que deseas aplicar. Consulta los ejemplos de configuración para ver archivos JSON de muestra.
Usa el comando
gsutil cors
para aplicar la configuración a un bucket:gsutil cors set CORS_CONFIG_FILE gs://BUCKET_NAME
Aquí:
CORS_CONFIG_FILE
es la ruta de acceso al archivo JSON que creaste en el paso 1.BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
En el siguiente ejemplo, se establece una configuración de CORS en un bucket:
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
En el siguiente ejemplo, se establece una configuración de CORS en un bucket:
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
En el siguiente ejemplo, se establece una configuración de CORS en un bucket:
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
En el siguiente ejemplo, se establece una configuración de CORS en un bucket:
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
En el siguiente ejemplo, se establece una configuración de CORS en un bucket:
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
En el siguiente ejemplo, se establece una configuración de CORS en un bucket:
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
En el siguiente ejemplo, se establece una configuración de CORS en un bucket:
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
En el siguiente ejemplo, se establece una configuración de CORS en un bucket:
API de REST
API de JSON
- Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
Crea un archivo JSON con la configuración de CORS que deseas aplicar. Consulta los ejemplos de configuración para ver archivos JSON de muestra.
Usa
cURL
para llamar a la API de JSON con una solicitud de bucketPATCH
:curl --request PATCH \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors' \ --header 'Authorization: Bearer OAUTH2_TOKEN' \ --header 'Content-Type: application/json' \ --data-binary @CORS_CONFIG_FILE
En el ejemplo anterior, se ilustra lo siguiente:
BUCKET_NAME
es el nombre del depósito. Por ejemplo,my-bucket
.OAUTH2_TOKEN
es el token de acceso que generaste en el paso 1.CORS_CONFIG_FILE
es la ruta de acceso al archivo JSON que creaste en el paso 2.
API de XML
- Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
Crea un archivo XML con la configuración de CORS que desees aplicar. Consulta los ejemplos de configuración para ver archivos XML de muestra.
Usa
cURL
para llamar a la API de XML con una solicitudSet Bucket CORS
:curl -X PUT --data-binary @CORS_CONFIG_FILE \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "x-goog-project-id: PROJECT_ID" \ "https://storage.googleapis.com/BUCKET_NAME?cors"
En el ejemplo anterior, se ilustra lo siguiente:
BUCKET_NAME
es el nombre del depósito. Por ejemplo,my-bucket
.OAUTH2_TOKEN
es el token de acceso que generaste en el paso 1.PROJECT_ID
es el ID del proyecto asociado con el depósito. Por ejemplo,my-project
CORS_CONFIG_FILE
es la ruta de acceso al archivo XML que creaste en el paso 2.
Visualiza la configuración de CORS de un bucket
Para ver la configuración de CORS de un bucket, realiza las siguientes acciones:
Console
No puedes administrar CORS con la consola de Google Cloud. En su lugar, usa la CLI de gcloud.
Línea de comandos
gcloud
Usa el comando gcloud storage buckets describe
con la marca --format
:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(cors)"
En el que BUCKET_NAME
es el nombre del bucket cuya configuración de CORS deseas ver. Por ejemplo, my-bucket
gsutil
Usa el comando gsutil cors
para obtener la configuración de CORS de un depósito:
gsutil cors get gs://BUCKET_NAME
En el que BUCKET_NAME
es el nombre del bucket cuya configuración de CORS deseas ver. Por ejemplo, my-bucket
Bibliotecas cliente
Si quieres ver la configuración de CORS de un bucket mediante las bibliotecas cliente, sigue las instrucciones para mostrar los metadatos de un bucket y busca el campo de CORS en la respuesta:
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
API de REST
API de JSON
- Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
Usa
cURL
para llamar a la API de JSON con una solicitud de bucketGET
:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors"
Aquí:
OAUTH2_TOKEN
es el nombre del token de acceso que generaste en el paso 1.BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
API de XML
- Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
Usa
cURL
para llamar a la API de XML con una solicitud de bucketGET
:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME?cors"
En el ejemplo anterior, se ilustra lo siguiente:
OAUTH2_TOKEN
es el nombre del token de acceso que generaste en el paso 1.BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
Soluciona problemas de solicitudes de CORS
Si te encuentras con un comportamiento inesperado cuando accedes a los buckets de Cloud Storage desde un origen diferente, prueba los siguientes pasos:
Revisa la configuración de CORS en el bucket de destino. Si tienes varias entradas de configuración de CORS, asegúrate de que los valores de solicitud que usas para solucionar problemas se asignen a valores en una sola entrada de configuración de CORS.
Comprueba que no estás realizando una solicitud al extremo
storage.cloud.google.com
, que no permite solicitudes de CORS. Para obtener más información sobre los extremos compatibles con CORS, consulta Compatibilidad con CORS de Cloud Storage.Revisa una solicitud y una respuesta con la herramienta que prefieras. En un navegador Chrome, puedes usar las herramientas para desarrolladores estándar a fin de ver esta información:
- Haz clic en el menú de Chrome
en la barra de herramientas del navegador.
- Selecciona Más herramientas > Herramientas para desarrolladores.
- Haz clic en la pestaña Red.
- Desde tu aplicación o la línea de comandos, envía la solicitud.
- En el panel que muestra la actividad de la red, busca la solicitud.
- En la columna Nombre, haz clic en el nombre correspondiente a la solicitud.
- Haz clic en la pestaña Encabezados para ver los encabezados de respuesta, o en la pestaña Respuesta si deseas ver el contenido de la respuesta.
Si no ves una solicitud y respuesta, es posible que tu navegador tenga almacenado en caché un intento anterior de solicitud de verificación previa con errores. Si se borra la caché de tu navegador, también se debería borrar la caché de la comprobación previa. Si esto no sucede, configura el valor
MaxAgeSec
en tu configuración de CORS en un valor más bajo. Si no se especifica, el valor predeterminado es de 1,800 segundos (30 minutos). Espera el tiempo establecido en elMaxAgeSec
anterior y, luego, intenta realizar la solicitud de nuevo. Esto realiza una nueva solicitud de comprobación previa, que recupera la configuración de CORS nueva y borra definitivamente las entradas de caché. Una vez que hayas depurado tu problema, vuelve a aumentarMaxAgeSec
a un valor más alto, para reducir el tráfico de comprobación previa de tu depósito.- Haz clic en el menú de Chrome
Asegúrate de que la solicitud tenga un encabezado
Origin
y que el valor del encabezado coincida con al menos uno de los valoresOrigins
en la configuración de CORS del depósito. Ten en cuenta que el esquema, el host y el puerto de los valores deben coincidir de forma exacta. Los siguientes son algunos ejemplos de coincidencias aceptables:http://origin.example.com
coincide conhttp://origin.example.com:80
(ya que 80 es el puerto HTTP predeterminado), pero no coincide conhttps://origin.example.com
,http://origin.example.com:8080
,http://origin.example.com:5151
nihttp://sub.origin.example.com
.https://example.com:443
coincide conhttps://example.com
pero no conhttp://example.com
nihttp://example.com:443
.http://localhost:8080
solo coincide de forma exacta conhttp://localhost:8080
, no conhttp://localhost:5555
nihttp://localhost.example.com:8080
.
Asegúrate de que el método HTTP de la solicitud (si es una solicitud simple) o el método especificado en
Access-Control-Request-Method
(si es una solicitud de comprobación previa) coincida con al menos uno de los valoresMethods
en la configuración de CORS del depósito.Si se trata de una solicitud de comprobación previa, verifica si incluye uno o más encabezados
Access-Control-Request-Header
. Si es así, asegúrate de que cada valorAccess-Control-Request-Header
coincida con un valorResponseHeader
en la configuración de CORS del depósito. Todos los encabezados nombrados enAccess-Control-Request-Header
deben estar en la configuración de CORS para que la solicitud de comprobación previa tenga éxito y se incluyan los encabezados de CORS en la respuesta.
¿Qué sigue?
- Explora los ejemplos de configuración de CORS, incluido un ejemplo que quita la configuración de CORS en un bucket.
- Obtén más información sobre CORS.