Panoramica Esempi di configurazione
La condivisione delle risorse tra origini (CORS) consente le interazioni tra risorse di origini diverse, attività che in genere è vietata per prevenire comportamenti dannosi. Utilizza questa pagina per scoprire come impostare una configurazione CORS su un bucket Cloud Storage e come visualizzare il set di configurazione CORS in un bucket. Consulta gli esempi di configurazione per CORS per alcuni esempi di configurazioni CORS, inclusa quella che disabilita qualsiasi configurazione esistente nel bucket.
Imposta la configurazione CORS su un bucket
Puoi impostare una configurazione CORS su un bucket specificando informazioni, come metodi HTTP e domini di origine, che identificano i tipi di richieste che il bucket può accettare.
Per impostare una configurazione CORS sul tuo bucket:
Console
Non puoi gestire CORS utilizzando la console Google Cloud. Utilizza invece gcloud CLI.
Riga di comando
Crea un file JSON con la configurazione CORS che vuoi applicare. Consulta gli esempi di configurazione per alcuni file JSON di esempio.
Utilizza il comando
gcloud storage buckets update
con il flag--cors-file
:gcloud storage buckets update gs://BUCKET_NAME --cors-file=CORS_CONFIG_FILE
Dove:
BUCKET_NAME
è il nome del bucket pertinente. Ad esempio,my-bucket
.CORS_CONFIG_FILE
è il percorso del file JSON creato nel passaggio 1.
Librerie client
C++
Per maggiori informazioni, consulta la documentazione di riferimento dell'API C++ di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
L'esempio seguente imposta una configurazione CORS in un bucket:
C#
Per maggiori informazioni, consulta la documentazione di riferimento dell'API C# di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
L'esempio seguente imposta una configurazione CORS in un bucket:
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
L'esempio seguente imposta una configurazione CORS in un bucket:
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
L'esempio seguente imposta una configurazione CORS in un bucket:
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
L'esempio seguente imposta una configurazione CORS in un bucket:
PHP
Per maggiori informazioni, consulta la documentazione di riferimento dell'API PHP di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
L'esempio seguente imposta una configurazione CORS in un bucket:
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
L'esempio seguente imposta una configurazione CORS in un bucket:
Ruby
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Ruby di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
L'esempio seguente imposta una configurazione CORS in un bucket:
API REST
API JSON
Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione
Authorization
.In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione
Authorization
.Crea un file JSON con la configurazione CORS che vuoi applicare. Consulta gli esempi di configurazione per alcuni file JSON di esempio.
Utilizza
cURL
per chiamare l'API JSON con una richiestaPATCH
di bucket:curl --request PATCH \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' \ --header 'Content-Type: application/json' \ --data-binary @CORS_CONFIG_FILE
Dove:
BUCKET_NAME
è il nome del bucket. Ad esempio,my-bucket
.CORS_CONFIG_FILE
è il percorso del file JSON creato nel passaggio 2.
API XML
Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione
Authorization
.In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione
Authorization
.Crea un file XML con la configurazione CORS che vuoi applicare. Consulta gli esempi di configurazione per alcuni file XML di esempio.
Utilizza
cURL
per chiamare l'API XML con una richiestaPUT Bucket
con ambito?cors
:curl -X PUT --data-binary @CORS_CONFIG_FILE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-project-id: PROJECT_ID" \ "https://storage.googleapis.com/BUCKET_NAME?cors"
Dove:
BUCKET_NAME
è il nome del bucket. Ad esempio,my-bucket
.PROJECT_ID
è l'ID del progetto associato al bucket. Ad esempio,my-project
.CORS_CONFIG_FILE
è il percorso del file XML che hai creato nel passaggio 2.
Per rimuovere la configurazione CORS per un bucket, imposta una configurazione CORS vuota.
Visualizza la configurazione CORS per un bucket
Per visualizzare la configurazione CORS per un bucket:
Console
Non puoi gestire CORS utilizzando la console Google Cloud. Utilizza invece gcloud CLI.
Riga di comando
Utilizza il comando gcloud storage buckets describe
con il flag --format
:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(cors_config)"
Dove BUCKET_NAME
è il nome del bucket
di cui vuoi visualizzare la configurazione CORS. Ad esempio, my-bucket
.
Librerie client
Per visualizzare la configurazione CORS per un bucket che utilizza le librerie client, segui le istruzioni per visualizzare i metadati di un bucket e cerca il campo CORS nella risposta:
C++
Per maggiori informazioni, consulta la documentazione di riferimento dell'API C++ di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C#
Per maggiori informazioni, consulta la documentazione di riferimento dell'API C# di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
PHP
Per maggiori informazioni, consulta la documentazione di riferimento dell'API PHP di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Ruby di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
API REST
API JSON
Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione
Authorization
.In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione
Authorization
.Utilizza
cURL
per chiamare l'API JSON con una richiestaGET
di bucket:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors"
Dove:
BUCKET_NAME
è il nome del bucket pertinente. Ad esempio,my-bucket
.
API XML
Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione
Authorization
.In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione
Authorization
.Utilizza
cURL
per chiamare l'API XML con una richiestaGET
Bucket con ambito?cors
:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?cors"
Dove
BUCKET_NAME
è il nome del bucket pertinente. Ad esempio,my-bucket
.
Risolvere i problemi relativi alle richieste CORS
Se riscontri un comportamento imprevisto quando accedi ai bucket Cloud Storage da un'origine diversa, prova a seguire questi passaggi:
Esamina la configurazione CORS sul bucket di destinazione. Se disponi di più voci di configurazione CORS, assicurati che i valori della richiesta utilizzati per la risoluzione dei problemi siano mappati ai valori in un'unica voce di configurazione CORS.
Assicurati di non effettuare una richiesta all'endpoint
storage.cloud.google.com
, il che non consente le richieste CORS. Per ulteriori informazioni sugli endpoint supportati per CORS, consulta Supporto CORS per Cloud Storage.Esamina una richiesta e una risposta utilizzando lo strumento che preferisci. Nel browser Chrome puoi utilizzare gli strumenti per sviluppatori standard per visualizzare queste informazioni:
- Fai clic sul menu Chrome (more_vert) nella barra degli strumenti del browser.
- Seleziona Altri strumenti > Strumenti per sviluppatori.
- Fai clic sulla scheda Rete.
- Invia la richiesta dall'applicazione o dalla riga di comando.
- Individua la richiesta nel riquadro che mostra l'attività di rete.
- Nella colonna Nome, fai clic sul nome corrispondente alla richiesta.
- Fai clic sulla scheda Intestazioni per visualizzare le intestazioni della risposta oppure sulla scheda Risposta per vedere il contenuto della risposta.
Se non vedi una richiesta e una risposta, è possibile che il tuo browser abbia memorizzato nella cache un precedente tentativo di richiesta preflight non riuscito. Se svuoti la cache del browser, dovresti anche svuotare la cache preflight. In caso contrario, imposta il valore
MaxAgeSec
nella configurazione CORS su un valore inferiore (il valore predefinito è 1800 (30 minuti) se non specificato), attendi che sia lungo il valore precedente diMaxAgeSec
, quindi riprova a eseguire la richiesta. Viene eseguita una nuova richiesta preflight, che recupera la nuova configurazione CORS ed elimina definitivamente le voci della cache. Dopo aver eseguito il debug del problema, imposta nuovamenteMaxAgeSec
a un valore più alto per ridurre il traffico preflight verso il tuo bucket.Assicurati che la richiesta abbia un'intestazione
Origin
e che il valore dell'intestazione corrisponda ad almeno uno dei valoriOrigins
nella configurazione CORS del bucket. Tieni presente che lo schema, l'host e la porta dei valori devono corrispondere esattamente. Di seguito sono riportati alcuni esempi di corrispondenze accettabili:http://origin.example.com
corrisponde ahttp://origin.example.com:80
(perché 80 è la porta HTTP predefinita), ma non corrisponde ahttps://origin.example.com
,http://origin.example.com:8080
,http://origin.example.com:5151
ohttp://sub.origin.example.com
.https://example.com:443
corrisponde ahttps://example.com
ma non ahttp://example.com
ohttp://example.com:443
.http://localhost:8080
corrisponde esattamente ahttp://localhost:8080
, non ahttp://localhost:5555
ohttp://localhost.example.com:8080
.
Assicurati che il metodo HTTP della richiesta (se si tratta di una richiesta semplice) o il metodo specificato in
Access-Control-Request-Method
(se si tratta di una richiesta preflight) corrisponda ad almeno uno dei valoriMethods
nella configurazione CORS del bucket.Se si tratta di una richiesta preflight, controlla se include una o più intestazioni
Access-Control-Request-Header
. In questo caso, assicurati che ogni valore diAccess-Control-Request-Header
corrisponda a un valore diResponseHeader
nella configurazione CORS del bucket. Tutte le intestazioni denominate nell'elementoAccess-Control-Request-Header
devono essere nella configurazione CORS affinché la richiesta preflight possa avere esito positivo e includere le intestazioni CORS nella risposta.
Passaggi successivi
- Esplora gli esempi di configurazione CORS, tra cui un esempio che rimuove la configurazione CORS da un bucket.
- Scopri di più su CORS.