Nous avons annoncé
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Partage des ressources cross-origine (CORS)
Le partage des ressources cross-origin, ou CORS, est une fonctionnalité de sécurité des navigateurs web modernes. Elle permet aux navigateurs web de négocier les domaines pouvant effectuer des demandes de sites web ou services externes. CORS est une fonction importante à prendre en considération lors du développement des applications de navigateur avec le kit AWS SDK for JavaScript, car la plupart des demandes de ressources sont envoyées à un domaine externe, tel que le point de terminaison d'un service web. Si votre environnement JavaScript utilise la sécurité CORS, vous devez configurer CORS avec le service.
CORS détermine s'il convient d'autoriser le partage des ressources dans une demande cross-origin en se basant sur :
Le domaine spécifique qui effectue la demande
Le type de demande HTTP effectuée (GET, PUT, POST, DELETE, etc.)
Mode de fonctionnement de CORS
Dans le cas le plus simple, votre script de navigateur effectue une demande GET pour une ressource à partir d'un serveur appartenant à un autre domaine. Selon la configuration CORS de ce serveur, si la demande provient d'un domaine qui est autorisé à soumettre des demandes GET, le serveur cross-origin répond en retournant la ressource demandée.
Si le domaine effectuant la demande ou si le type de demande HTTP n'est pas autorisé, la demande est refusée. Toutefois, CORS permet de vérifier la demande en amont avant de la soumettre. Dans ce cas, une demande en amont est effectuée. Cette demande inclut l'envoi de l'opération de demande d'accès OPTIONS
. Si la configuration de la fonction CORS du serveur cross-origin accorde l'accès au domaine demandeur, le serveur renvoie une réponse en amont qui répertorie tous les types de requête HTTP que le domaine demandeur peut faire sur la ressource demandée.
La configuration CORS est-elle obligatoire ?
Les compartiments Amazon S3 nécessitent une configuration CORS pour que vous puissiez effectuer des opérations sur ces derniers. Dans certains environnements JavaScript, CORS n'est pas appliquée et, par conséquent, la configuration CORS est inutile. Par exemple, si vous hébergez votre application à partir d'un compartiment Amazon S3 et que vous accédez à des ressources à partir de*.s3.amazonaws.com
ou d'un autre point de terminaison spécifique, vos demandes n'accéderont pas à un domaine externe. Par conséquent, cette configuration n'exige pas CORS. Dans ce cas, CORS est toujours utilisé pour des services autres qu'Amazon S3.
Configuration de CORS pour un compartiment Amazon S3
Vous pouvez configurer un compartiment Amazon S3 pour utiliser CORS dans la console Amazon S3.
-
Dans la console Amazon S3, sélectionnez le compartiment que vous souhaitez modifier.
-
Select theAutorisationset faites défiler vers le bas jusqu'à l'ongletPartage des ressources cross-origine (CORS)Volet.
-
ChoisissezModifier, et saisissez votre configuration CORS dans le champÉditeur de configuration CORS, puisEnregistrer.
Une configuration CORS est un fichier XML qui contient une série de règles au sein d'un élément <CORSRule>
. Une configuration peut contenir jusqu'à 100 règles. Une règle est définie par l'une des balises suivantes :
<AllowedOrigin>
, qui spécifie les origines de domaine que vous autorisez à effectuer des demandes inter-domaines.<AllowedMethod>
, qui spécifie un type de demande que vous autorisez (GET, PUT, POST, DELETE, HEAD) dans les demandes inter-domaines.<AllowedHeader>
, qui spécifie les en-têtes autorisés dans une demande en amont.
Pour obtenir des exemples de configurations, voirComment configurer le CORS sur un compartiment ?dans leManuel de l'utilisateur d'Amazon Simple Storage Service.
Exemple de configuration CORS
L'exemple de configuration CORS suivant autorise un utilisateur à afficher, ajouter, supprimer ou mettre à jour des objets à l'intérieur d'un compartiment à partir du domaine example.org
, mais il est recommandé de limiter la portée de <AllowedOrigin>
au domaine de votre site web. Vous pouvez spécifier "*"
pour autoriser n'importe quelle origine.
Important
Dans la nouvelle console S3, la configuration CORS doit être de type JSON.
Cette configuration n'autorise pas l'utilisateur à effectuer des actions sur le compartiment. Elle permet au modèle de sécurité du navigateur d'autoriser une demande à Amazon S3. Les autorisations doivent être configurées via des autorisations de compartiment ou des autorisations de rôle IAM.
Vous pouvez utiliserExposeHeader
pour permettre au kit SDK de lire les en-têtes de réponse renvoyés par Amazon S3. Par exemple, si vous souhaitez lire l'en-tête ETag
à partir d'un PUT
ou d'un chargement partitionné, vous devez inclure la balise ExposeHeader
dans votre configuration, comme illustré dans l'exemple précédent. Le kit SDK ne peut accéder qu'aux en-têtes qui sont exposés via la configuration CORS. Si vous définissez des métadonnées sur l'objet, les valeurs sont renvoyées sous forme d'en-têtes avec le préfixe x-amz-meta-
, comme x-amz-meta-my-custom-header
par exemple, et doivent également être exposées de la même manière.