Configure les règles de partage de ressources entre origines multiples (CORS) pour un compartiment.
Remarques d'utilisation
-
Désactivation par défaut
Le CORS est désactivé par défaut. Toutes les requêtes inter-origines sont interdites.
-
Écrasement des règles existantes
Les nouvelles règles CORS configurées via PutBucketCors écrasent toutes les règles CORS existantes du compartiment.
-
Utilisation du CORS dans les applications
Appelez PutBucketCors pour configurer les règles CORS avant d'utiliser le CORS dans vos applications.
Par exemple, pour autoriser
example.comà accéder à OSS via le navigateur en utilisantXMLHttpRequest, configurez une règle CORS au format XML à l'aide de cette opération. -
Correspondance des règles CORS
Lorsque OSS reçoit une requête inter-origines ou une requête OPTIONS pour un compartiment, il vérifie séquentiellement les règles CORS configurées et renvoie les en-têtes correspondants pour la première correspondance trouvée. Si aucune règle ne correspond, OSS n'inclut pas d'en-têtes CORS dans la réponse.
Une requête correspond à une règle CORS uniquement si toutes les conditions suivantes sont remplies :
L'origine de la requête correspond à une valeur
AllowedOrigindéfinie dans la règle.La méthode de la requête ou la valeur de l'en-tête
Access-Control-Request-Methodcorrespond à une valeurAllowedMethod.Chaque en-tête présent dans
Access-Control-Request-Headerscorrespond à une valeurAllowedHeader.
Permissions
Par défaut, un compte Alibaba Cloud dispose de toutes les autorisations. Les utilisateurs RAM ou les rôles RAM associés à un compte Alibaba Cloud ne disposent d'aucune autorisation par défaut. Le compte Alibaba Cloud ou l'administrateur du compte doit accorder les autorisations d'opération via des politiques RAM ou une Bucket Policy.
|
API |
Action |
Description |
|
PutBucketCors |
oss:PutBucketCors |
Configure les règles de partage de ressources entre origines multiples (CORS) pour un compartiment. |
Syntaxe de la requête
PUT /?cors HTTP/1.1
Date: GMT Date
Content-Length: ContentLength
Content-Type: application/xml
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>the origin you want allow CORS request from</AllowedOrigin>
<AllowedOrigin>…</AllowedOrigin>
<AllowedMethod>HTTP method</AllowedMethod>
<AllowedMethod>…</AllowedMethod>
<AllowedHeader> headers that allowed browser to send</AllowedHeader>
<AllowedHeader>…</AllowedHeader>
<ExposeHeader> headers in response that can access from client app</ExposeHeader>
<ExposeHeader>…</ExposeHeader>
<MaxAgeSeconds>time to cache pre-fight response</MaxAgeSeconds>
</CORSRule>
<CORSRule>
...
</CORSRule>
...
</CORSConfiguration >
Éléments de la requête
|
Element |
Type |
Required |
Example |
Description |
|
CORSRule |
Container |
Yes |
N/A |
Conteneur qui stocke les règles CORS. Maximum : 20 règles CORS par compartiment. Taille maximale du corps de la requête : 16 Ko. Nœuds parents : CORSConfiguration |
|
AllowedOrigin |
String |
Yes |
* |
Origine de la requête inter-origines autorisée. Spécifiez plusieurs éléments pour plusieurs origines. Un astérisque (*) comme caractère générique autorise toutes les origines. Un seul caractère générique est pris en charge par élément. Nœuds parents : CORSRule |
|
AllowedMethod |
Enumeration |
Yes |
GET |
Méthode de requête inter-origines autorisée. Valeurs valides : GET, PUT, DELETE, POST et HEAD. Nœuds parents : CORSRule |
|
AllowedHeader |
String |
No |
Authorization |
En-têtes autorisés dans les requêtes inter-origines, validés par rapport à Chaque en-tête présent dans Important
Vous ne pouvez utiliser qu'un seul astérisque (*) comme caractère générique pour AllowedHeader. Les caractères suivants ne sont pas pris en charge :
Nœuds parents : CORSRule |
|
ExposeHeader |
String |
No |
x-oss-test |
En-têtes de réponse accessibles aux applications clientes telles que JavaScript XMLHttpRequest. Important
Les caractères suivants ne sont pas pris en charge :
Nœuds parents : CORSRule |
|
MaxAgeSeconds |
Integer |
No |
100 |
Durée pendant laquelle le navigateur peut mettre en cache la réponse de pré-vérification. Unité : secondes. Un seul élément MaxAgeSeconds est autorisé par règle CORS. Nœuds parents : CORSRule |
|
CORSConfiguration |
Container |
Yes |
N/A |
Conteneur qui stocke les configurations CORS du compartiment. Nœuds parents : aucun |
|
ResponseVary |
Boolean |
No |
false |
Indique s'il faut renvoyer l'en-tête Vary: Origin. Valeurs valides :
Important
Valide uniquement lorsqu'au moins une règle CORS est configurée. |
Cette opération utilise également des en-têtes HTTP communs.
En-têtes de réponse
Les réponses PutBucketCors contiennent uniquement des en-têtes HTTP communs.
Exemples
-
Exemple de requête
PUT /?cors HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 186 Date: Fri, 04 May 2012 03:21:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedHeader>Authorization</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>http://example.com</AllowedOrigin> <AllowedOrigin>http://example.net</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedHeader> Authorization</AllowedHeader> <ExposeHeader>x-oss-test</ExposeHeader> <ExposeHeader>x-oss-test1</ExposeHeader> <MaxAgeSeconds>100</MaxAgeSeconds> </CORSRule> <ResponseVary>false</ResponseVary> </CORSConfiguration > -
Exemple de réponse
HTTP/1.1 200 OK x-oss-request-id: 50519080C4689A033D0***** Date: Fri, 04 May 2012 03:21:12 GMT Content-Length: 0 Connection: keep-alive Server: AliyunOSS x-oss-server-time: 94
SDK
Les SDK OSS suivants prennent en charge PutBucketCors :
ossutil
Pour plus d'informations sur la commande ossutil correspondant à l'opération PutBucketCors, consultez put-bucket-cors.
Codes d'erreur
|
Error code |
HTTP status code |
Description |
|
InvalidDigest |
400 |
La valeur Content-MD5 calculée à partir du corps de la requête ne correspond pas à la valeur Content-MD5 présente dans l'en-tête de la requête. |