Présentation Exemples de configurations
Le partage des ressources entre origines multiples (CORS, Cross Origin Resource Sharing) permet les interactions entre des ressources d'origines différentes, ce qui est normalement interdit afin d'empêcher tout comportement malveillant. Cet article explique comment définir une configuration CORS sur un bucket Cloud Storage et comment afficher la configuration CORS définie sur un bucket. Consultez la section Exemples de configuration pour CORS afin d'obtenir des exemples de configurations CORS, y compris celle qui désactive toute configuration existante sur votre bucket.
Définir la configuration CORS sur un bucket
Pour définir la configuration CORS sur un bucket, spécifiez des informations telles que les méthodes HTTP et les domaines d'origine, qui identifient les types de requêtes que le bucket peut accepter.
Pour définir une configuration CORS dans votre bucket, procédez comme suit :
Console
Vous ne pouvez pas gérer le CORS à l'aide de la console Google Cloud. Utilisez plutôt gcloud CLI.
Ligne de commande
Créez un fichier JSON avec la configuration CORS que vous souhaitez appliquer. Consultez ces exemples de configuration pour obtenir des exemples de fichiers JSON.
Exécutez la commande
gcloud storage buckets update
avec l'option--cors-file
:gcloud storage buckets update gs://BUCKET_NAME --cors-file=CORS_CONFIG_FILE
Où :
BUCKET_NAME
correspond au nom du bucket concerné. Par exemple,my-bucket
.CORS_CONFIG_FILE
est le chemin d'accès au fichier JSON que vous avez créé à l'étape 1.
Bibliothèques clientes
C++
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
L'exemple suivant définit une configuration CORS sur un bucket :
C#
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
L'exemple suivant définit une configuration CORS sur un bucket :
Go
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Go.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
L'exemple suivant définit une configuration CORS sur un bucket :
Java
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
L'exemple suivant définit une configuration CORS sur un bucket :
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
L'exemple suivant définit une configuration CORS sur un bucket :
PHP
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
L'exemple suivant définit une configuration CORS sur un bucket :
Python
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
L'exemple suivant définit une configuration CORS sur un bucket :
Ruby
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Ruby.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
L'exemple suivant définit une configuration CORS sur un bucket :
API REST
API JSON
- Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth. Pour obtenir des instructions, consultez la page Authentification des API.
Créez un fichier JSON avec la configuration CORS que vous souhaitez appliquer. Consultez ces exemples de configuration pour obtenir des exemples de fichiers JSON.
Exécutez
cURL
pour appeler l'API JSON avec une requête 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
Où :
BUCKET_NAME
est le nom du bucket. Exemple :my-bucket
.OAUTH2_TOKEN
correspond au jeton d'accès que vous avez généré à l'étape 1.CORS_CONFIG_FILE
est le chemin d'accès au fichier JSON que vous avez créé à l'étape 2.
API XML
- Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth. Pour obtenir des instructions, consultez la page Authentification des API.
Créez un fichier XML avec la configuration CORS que vous souhaitez appliquer. Consultez les exemples de configuration pour obtenir des exemples de fichiers XML.
Exécutez
cURL
pour appeler l'API XML avec une requêtePUT Bucket
limitée à?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"
Où :
BUCKET_NAME
est le nom du bucket. Exemple :my-bucket
.OAUTH2_TOKEN
correspond au jeton d'accès que vous avez généré à l'étape 1.PROJECT_ID
correspond à l'ID du projet associé au bucket. Exemple :my-project
CORS_CONFIG_FILE
correspond au chemin d'accès au fichier XML que vous avez créé à l'étape 2.
Afficher la configuration CORS d'un bucket
Pour afficher la configuration CORS d'un bucket, procédez comme suit :
Console
Vous ne pouvez pas gérer le CORS à l'aide de la console Google Cloud. Utilisez plutôt gcloud CLI.
Ligne de commande
Exécutez la commande gcloud storage buckets describe
avec l'option --format
:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(cors_config)"
Où BUCKET_NAME
correspond au nom du bucket dont vous souhaitez afficher la configuration CORS. Par exemple, my-bucket
.
Bibliothèques clientes
Pour afficher la configuration CORS d'un bucket à l'aide des bibliothèques clientes, suivez les instructions pour afficher les métadonnées d'un bucket et recherchez le champ CORS dans la réponse :
C++
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
C#
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Go.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Ruby.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
API REST
API JSON
- Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth. Pour obtenir des instructions, consultez la page Authentification des API.
Exécutez
cURL
pour appeler l'API JSON avec une requête de bucketGET
:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors"
Où :
OAUTH2_TOKEN
correspond au nom du jeton d'accès que vous avez généré à l'étape 1 ;BUCKET_NAME
correspond au nom du bucket concerné. Exemple :my-bucket
API XML
- Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth. Pour obtenir des instructions, consultez la page Authentification des API.
Exécutez
cURL
pour appeler l'API XML avec une requêteGET
limitée à?cors
:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME?cors"
Où :
OAUTH2_TOKEN
correspond au nom du jeton d'accès que vous avez généré à l'étape 1 ;BUCKET_NAME
correspond au nom du bucket concerné. Par exemple,my-bucket
.
Résoudre les problèmes liés aux requêtes CORS
Si vous constatez un comportement inattendu lorsque vous accédez à des buckets Cloud Storage d'une autre origine, procédez comme suit :
Vérifiez la configuration CORS sur le bucket cible. Si vous disposez de plusieurs entrées de configuration CORS, assurez-vous que les valeurs de requête que vous utilisez pour le dépannage sont mappées avec les valeurs d'une seule entrée de configuration CORS.
Vérifiez que vous n'envoyez pas de requête au point de terminaison
storage.cloud.google.com
, qui n'autorise pas les requêtes CORS. Pour plus d'informations sur les points de terminaison compatibles avec le CORS, consultez la section Compatibilité du CORS avec Cloud Storage.Examinez une requête et sa réponse à l'aide de l'outil de votre choix. Dans un navigateur Chrome, vous pouvez utiliser les outils de développement standards pour afficher ces informations :
- Cliquez sur le menu Chrome (more_vert) dans la barre d'outils du navigateur.
- Sélectionnez Plus d'outils > Outils de développement.
- Cliquez sur l'onglet Réseau.
- À partir de votre application ou de votre ligne de commande, envoyez la requête.
- Dans le volet affichant l'activité du réseau, localisez la requête.
- Dans la colonne Name (Nom), cliquez sur le nom correspondant à la requête.
- Cliquez sur l'onglet Headers (En-têtes) pour voir les en-têtes de réponse ou sur l'onglet Response (Réponse) pour voir le contenu de la réponse.
Si vous ne voyez ni requête ni réponse, il est possible que votre navigateur ait mis en cache une tentative de requête de pré-vérification ayant échoué précédemment. Si vous videz le cache de votre navigateur, cela devrait également vider le cache de pré-vérification. Dans le cas contraire, diminuez la valeur
MaxAgeSec
dans votre configuration CORS (la valeur par défaut est 1 800 (30 minutes) si elle n'est pas spécifiée), attendez pendant la durée de l'ancienne valeurMaxAgeSec
, puis renouvelez la requête. Cela entraîne l'exécution d'une nouvelle requête de pré-vérification, qui récupère la nouvelle configuration CORS et purge les entrées du cache. Une fois que vous avez résolu votre problème, augmentez à nouveau la valeurMaxAgeSec
afin de réduire le trafic de pré-vérification dans le bucket.Assurez-vous que la requête comporte un en-tête
Origin
et que la valeur de celui-ci correspond à au moins l'une des valeursOrigins
figurant dans la configuration CORS du bucket. Notez que le schéma, l'hôte et le port des valeurs doivent correspondre exactement. Voici quelques exemples de correspondances acceptables :http://origin.example.com
correspond àhttp://origin.example.com:80
(car 80 est le port HTTP par défaut), mais ne correspond pas àhttps://origin.example.com
, ni àhttp://origin.example.com:8080
,http://origin.example.com:5151
ethttp://sub.origin.example.com
.https://example.com:443
correspond àhttps://example.com
, mais pas àhttp://example.com
ni àhttp://example.com:443
.http://localhost:8080
ne correspond exactement qu'àhttp://localhost:8080
, pas àhttp://localhost:5555
ni àhttp://localhost.example.com:8080
.
Assurez-vous que la méthode HTTP de la requête (s'il s'agit d'une requête simple) ou que la méthode spécifiée dans
Access-Control-Request-Method
(s'il s'agit d'une requête de pré-vérification) correspond à au moins l'une des valeursMethods
figurant dans la configuration CORS du bucket.S'il s'agit d'une requête de pré-vérification, voyez si elle inclut un ou plusieurs en-têtes
Access-Control-Request-Header
. Le cas échéant, assurez-vous que chaque valeurAccess-Control-Request-Header
correspond à une valeurResponseHeader
de la configuration CORS du bucket. Tous les en-têtes nommés dansAccess-Control-Request-Header
doivent figurer dans la configuration CORS pour que la requête de pré-vérification aboutisse et pour inclure les en-têtes CORS dans la réponse.
Étapes suivantes
- Découvrez des exemples de configuration CORS, y compris un exemple qui supprime la configuration CORS d'un bucket.
- Apprenez-en plus sur CORS.