La condivisione delle risorse tra origini (CORS) consente di interagire tra risorse provenienti da origini diverse, che in genere sono vietate per evitare comportamenti dannosi. Utilizza questo argomento per scoprire come impostare una configurazione CORS su un bucket Cloud Storage e come visualizzare la configurazione CORS impostata su un bucket. Consulta Esempi di configurazione per CORS per esempi di configurazioni CORS, inclusa la configurazione che disabilita eventuali configurazioni esistenti sul bucket.
Imposta la configurazione CORS su un bucket
Puoi impostare una configurazione CORS su un bucket specificando informazioni, ad esempio metodi HTTP e domini di origine, che identificano i tipi di richieste che il bucket può accettare.
Per impostare una configurazione CORS nel bucket:
Console
Non puoi gestire CORS utilizzando la console Google Cloud. Utilizza invece l'interfaccia a riga di comando gcloud.
Riga di comando
gcloud
Crea un file JSON con la configurazione CORS da applicare. Vedi 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 che hai creato nel passaggio 1.
gsutil
Crea un file JSON con la configurazione CORS da applicare. Vedi gli esempi di configurazione per alcuni file JSON di esempio.
Utilizza il comando
gsutil cors
per applicare la configurazione a un bucket:gsutil cors set CORS_CONFIG_FILE gs://BUCKET_NAME
Dove:
CORS_CONFIG_FILE
è il percorso del file JSON che hai creato nel passaggio 1.BUCKET_NAME
è il nome del bucket pertinente. Ad esempio,my-bucket
.
Librerie client
C++
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage C++.
L'esempio seguente imposta una configurazione CORS su un bucket:
C#
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage C#.
L'esempio seguente imposta una configurazione CORS su un bucket:
Go
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Go.
L'esempio seguente imposta una configurazione CORS su un bucket:
Java
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Java.
L'esempio seguente imposta una configurazione CORS su un bucket:
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Node.js.
L'esempio seguente imposta una configurazione CORS su un bucket:
PHP
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage PHP.
L'esempio seguente imposta una configurazione CORS su un bucket:
Python
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Python.
L'esempio seguente imposta una configurazione CORS su un bucket:
Ruby
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Ruby.
L'esempio seguente imposta una configurazione CORS su un bucket:
API REST
API JSON
- Richiedi un token di accesso all'autorizzazione da Playground OAuth 2.0. Configura il parco giochi in modo che utilizzi le tue credenziali OAuth. Per le istruzioni, consulta Autenticazione API.
Crea un file JSON con la configurazione CORS da applicare. Vedi gli esempi di configurazione per alcuni file JSON di esempio.
Usa
cURL
per chiamare l'API JSON con unaPATCH
Bucket: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
Dove:
BUCKET_NAME
è il nome del bucket. Ad esempio,my-bucket
.OAUTH2_TOKEN
è il token di accesso che hai generato nel passaggio 1.CORS_CONFIG_FILE
è il percorso del file JSON che hai creato nel passaggio 2.
API XML
- Richiedi un token di accesso all'autorizzazione da Playground OAuth 2.0. Configura il parco giochi in modo che utilizzi le tue credenziali OAuth. Per le istruzioni, consulta Autenticazione API.
Crea un file XML con la configurazione CORS da applicare. Vedi gli esempi di configurazione per alcuni file XML di esempio.
Utilizza
cURL
per chiamare l'API XML con unaSet Bucket CORS
richiesta: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"
Dove:
BUCKET_NAME
è il nome del bucket. Ad esempio,my-bucket
.OAUTH2_TOKEN
è il token di accesso che hai generato nel passaggio 1.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.
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 l'interfaccia a riga di comando gcloud.
Riga di comando
gcloud
Utilizza il comando gcloud storage buckets describe
con il flag --format
:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(cors)"
Dove BUCKET_NAME
è il nome del bucket la cui configurazione CORS vuoi visualizzare. Ad esempio, my-bucket
.
gsutil
Utilizza il comando gsutil cors
per ottenere la configurazione CORS di un bucket:
gsutil cors get gs://BUCKET_NAME
Dove BUCKET_NAME
è il nome del bucket la cui configurazione CORS vuoi visualizzare. Ad esempio, my-bucket
.
Librerie client
Per visualizzare la configurazione CORS per un bucket utilizzando le librerie client, segui le istruzioni per la visualizzazione dei metadati di un bucket e cerca il campo CORS nella risposta:
C++
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage C++.
C#
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage C#.
Go
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Go.
Java
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Java.
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Node.js.
PHP
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage PHP.
Python
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Python.
Ruby
Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Cloud Storage Ruby.
API REST
API JSON
- Richiedi un token di accesso all'autorizzazione da Playground OAuth 2.0. Configura il parco giochi in modo che utilizzi le tue credenziali OAuth. Per le istruzioni, consulta Autenticazione API.
Usa
cURL
per chiamare l'API JSON con unaGET
Bucket:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors"
Dove:
OAUTH2_TOKEN
è il nome del token di accesso che hai generato nel passaggio 1.BUCKET_NAME
è il nome del bucket pertinente. Ad esempio,my-bucket
.
API XML
- Richiedi un token di accesso all'autorizzazione da Playground OAuth 2.0. Configura il parco giochi in modo che utilizzi le tue credenziali OAuth. Per le istruzioni, consulta Autenticazione API.
Utilizza
cURL
per chiamare l'API XML con una richiesta diGET
Bucket:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME?cors"
Dove:
OAUTH2_TOKEN
è il nome del token di accesso che hai generato nel passaggio 1.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 nel bucket di destinazione. Se sono presenti più voci di configurazione CORS, assicurati che i valori della richiesta che utilizzi per la risoluzione dei problemi vengano mappati ai valori in una singola voce di configurazione CORS.
Assicurati di non inviare una richiesta all'endpoint
storage.cloud.google.com
, che non consente le richieste CORS. Per ulteriori informazioni sugli endpoint supportati per CORS, consulta Supporto di CORS per Cloud Storage.Esamina una richiesta e una risposta utilizzando lo strumento che preferisci. In un browser Chrome, puoi utilizzare gli strumenti per sviluppatori standard per visualizzare queste informazioni:
- Fai clic sul menu Chrome
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 vedere le intestazioni della risposta o sulla scheda Risposta per vedere i contenuti 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 riuscita. Svuotare la cache del browser dovrebbe anche svuotare la cache preflight. In caso contrario, imposta il valore
MaxAgeSec
nella configurazione CORS su un valore più basso (il valore predefinito è 1800 (30 minuti) se non specificato), attendi che sia trascorso il valore precedente diMaxAgeSec
, quindi riprova a effettuare la richiesta. Esegue una nuova richiesta preflight, che recupera la nuova configurazione CORS ed elimina definitivamente le voci della cache. Dopo aver eseguito il debug del problema, ripristina il valoreMaxAgeSec
per ottenere un valore più alto, in modo da ridurre il traffico preflight al tuo bucket.- Fai clic sul menu Chrome
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. Ecco 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 solo 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 che 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
. Assicurati che ogni valoreAccess-Control-Request-Header
corrisponda a un valoreResponseHeader
nella configurazione CORS del bucket. Tutte le intestazioni denominate inAccess-Control-Request-Header
devono essere nella configurazione CORS per poter avere esito positivo la richiesta preflight e includere intestazioni CORS nella risposta.
Passaggi successivi
- Esplora gli esempi di configurazione CORS, incluso un esempio che rimuove la configurazione CORS in un bucket.
- Scopri di più su CORS.