Configuration CORS - Amazon Simple Storage Service

Configuration CORS

Pour configurer le compartiment afin qu'il autorise les demandes cross-origin, vous créez une configuration CORS. La configuration CORS est un document contenant les règles identifiant les origines auxquelles vous autorisez l'accès au compartiment, les opérations (méthodes HTTP) prises en charge pour chaque origine, et d'autres informations propres aux opérations. Vous pouvez ajouter jusqu'à 100 règles à la configuration. Vous pouvez ajouter la configuration CORS en tant que sous-ressource cors au compartiment.

Si vous configurez le CORS dans la console S3, vous devez utiliser JSON pour créer une configuration CORS. La nouvelle console S3 ne prend en charge que les configurations JSON CORS.

Pour plus d'informations sur la configuration CORS et les éléments qu'elle contient, consultez les rubriques ci-dessous. Pour savoir comment ajouter une configuration CORS, consultez la section Configuration du partage des ressources entre origines multiples (CORS).

Important

Dans la console S3, la configuration CORS doit être de type JSON.

Exemple 1

Au lieu d'accéder à un site web en utilisant un point de terminaison de site web Amazon S3, vous pouvez utiliser votre propre domaine, comme example1.com, pour proposer votre contenu. Pour plus d'informations sur l'utilisation de votre propre domaine, consultez Configuration d'un site web statique à l'aide d'un domaine personnalisé enregistré auprès de Route 53.

L'exemple de configuration cors suivant possède trois règles, qui sont spécifiées comme éléments CORSRule :

  • La première règle autorise des demandes cross-origin PUT, POST et DELETE de l'origine http://www.example1.com. La règle autorise également tous les en-têtes dans une demande OPTIONS en amont via l'en-tête Access-Control-Request-Headers. En réponse à toute demande OPTIONS en amont, Amazon S3 renvoie les en-têtes demandés.

  • La deuxième règle autorise les mêmes demandes cross-origin que la première, mais elle s'applique à une autre origine, http://www.example2.com.

  • La troisième règle permet des demandes GET cross-origin de toutes les origines. Le caractère générique * fait référence à toutes les origines.

JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example1.com" ], "ExposeHeaders": [] }, { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example2.com" ], "ExposeHeaders": [] }, { "AllowedHeaders": [], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [] } ]
XML
<CORSConfiguration> <CORSRule> <AllowedOrigin>http://www.example1.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>http://www.example2.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> </CORSRule> </CORSConfiguration>

Exemple 2

La configuration CORS permet également d'ajouter des paramètres facultatifs, comme illustré dans la configuration CORS suivante. Dans cet exemple, la configuration CORS permet les demandes PUT, POST et DELETE cross-origin depuis l'origine http://www.example.com.

JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example.com" ], "ExposeHeaders": [ "x-amz-server-side-encryption", "x-amz-request-id", "x-amz-id-2" ], "MaxAgeSeconds": 3000 } ]
XML
<CORSConfiguration> <CORSRule> <AllowedOrigin>http://www.example.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> <MaxAgeSeconds>3000</MaxAgeSeconds> <ExposeHeader>x-amz-server-side-encryption</ExposeHeader> <ExposeHeader>x-amz-request-id</ExposeHeader> <ExposeHeader>x-amz-id-2</ExposeHeader> </CORSRule> </CORSConfiguration>

L'élément CORSRule dans la configuration précédente inclut les éléments facultatifs suivants :

  • MaxAgeSeconds : spécifie le nombre d'heures en secondes (dans cet exemple, 3 000) pendant lesquelles le navigateur met en cache une réponse Amazon S3 à une demande OPTIONS en amont pour la ressource spécifiée. Le fait de mettre en cache la réponse évite au navigateur de devoir envoyer les demandes en amont à Amazon S3 si la demande originale est répétée.

  • ExposeHeader : identifie les en-têtes de réponse (dans cet exemple, x-amz-server-side-encryption, x-amz-request-id et x-amz-id-2) auxquels les clients peuvent accéder à partir de leurs applications (par exemple, à partir d'un objet XMLHttpRequest JavaScript).

Élément AllowedMethod

Dans la configuration CORS, vous pouvez spécifier les valeurs suivantes pour l'élément AllowedMethod.

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

Élément AllowedOrigin

Dans l'élément AllowedOrigin, vous spécifiez les origines à partir desquelles vous souhaitez autoriser des demandes cross-domaine, par exemple, http://www.example.com. La chaîne de caractères d'origine peut contenir au maximum un caractère générique *, comme http://*.example.com. Si vous le souhaitez, vous pouvez spécifier * comme l'origine pour permettre à toutes les origines d'envoyer des demandes cross-origin. Vous pouvez également spécifier https pour permettre uniquement les origines sécurisées.

Élément AllowedHeader

L'élément AllowedHeader spécifie les en-têtes autorisés dans une demande en amont via l'en-tête Access-Control-Request-Headers. Chaque nom d'en-tête dans l'en-tête Access-Control-Request-Headers doit correspondre à une entrée dans la règle. Amazon S3 envoie uniquement dans une réponse les en-têtes autorisés qui ont été demandés. Pour obtenir un exemple de liste d'en-têtes pouvant être utilisés dans les demandes adressées à Amazon S3, veuillez accéder à En-têtes de demande courants dans la Référence d'API Amazon Simple Storage Service.

Chaque chaîne de caractères AllowedHeader dans la règle peut contenir au maximum un caractère générique *. Par exemple, <AllowedHeader>x-amz-*</AllowedHeader> permet tous les en-têtes propres à Amazon.

Élément ExposeHeader

Chaque élément ExposeHeader identifie un en-tête dans la réponse auquel vous souhaitez que les clients puissent accéder depuis leurs applications (par exemple, depuis un objet XMLHttpRequest JavaScript). Pour obtenir la liste des en-têtes de réponse Amazon S3 courants, veuillez accéder à En-têtes de réponse courants dans la Référence d'API Amazon Simple Storage.

Élément MaxAgeSeconds

L'élément MaxAgeSeconds spécifie le nombre d'heures en secondes pendant lesquelles le navigateur peut mettre en cache une réponse pour une demande en amont comme identifié par la ressource, la méthode HTTP et l'origine.