

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.

# Politique POST
<a name="sigv4-HTTPPOSTConstructPolicy"></a>

**Topics**
+ [Expiration](#sigv4-HTTPPOSTExpiration)
+ [Correspondance des conditions](#sigv4-ConditionMatching)
+ [Conditions](#sigv4-PolicyConditions)
+ [Echappement de caractère](#sigv4-HTTPPOSTEscaping)

La politique requise pour effectuer des demandes authentifiées à l'aide de HTTP POST est un UTF-8 document codé en base64 écrit en notation JavaScript objet (JSON) qui spécifie les conditions que la demande doit remplir. Selon la manière dont vous concevez votre document de politique, vous pouvez contrôler la granularité de l'accès par téléchargement, par utilisateur, pour tous les téléchargements ou selon d'autres modèles répondant à vos besoins.

Cette section décrit la politique POST. Pour des exemples de calculs de signature à l'aide de la politique POST, consultez[Exemple : Browser-Based téléchargement à l'aide de HTTP POST (à l'aide de AWS Signature (version 4)](sigv4-post-example.md).

**Note**  
Bien que le document de politique soit facultatif, nous vous recommandons vivement d'en utiliser un afin de contrôler ce qui est autorisé dans la demande. Si vous rendez le compartiment accessible en écriture publique, vous n'avez aucun contrôle sur les utilisateurs qui peuvent y écrire.  
 

Voici un exemple de document de politique POST.

```
1. { "expiration": "2007-12-01T12:00:00.000Z",
2.   "conditions": [
3.     {"acl": "public-read" },
4.     {"bucket": "johnsmith" },
5.     ["starts-with", "$key", "user/eric/"],
6.   ]
7. }
```

La politique POST contient toujours les `conditions` éléments `expiration` et. L'exemple de politique utilise deux types de correspondance de conditions (correspondance exacte et correspondance commençant par une correspondance). Les sections suivantes décrivent ces éléments.

## Expiration
<a name="sigv4-HTTPPOSTExpiration"></a>

L'`expiration`élément spécifie la date et l'heure d'expiration de la politique POST au format de date ISO8601 GMT. Par exemple, `2013-08-01T12:00:00.000Z` spécifie que la politique POST n'est pas valide après minuit GMT le 1er août 2013.

## Correspondance des conditions
<a name="sigv4-ConditionMatching"></a>

Le tableau suivant décrit les types de correspondance de conditions que vous pouvez utiliser pour spécifier les conditions de politique POST (décrites dans la section suivante). Bien que vous deviez spécifier au moins une condition pour chaque champ de formulaire que vous spécifiez dans le formulaire, vous pouvez créer des critères de correspondance plus complexes en spécifiant plusieurs conditions pour un champ de formulaire.


|  Type de correspondance de condition |  Description  | 
| --- | --- | 
| Correspondances exactes | La valeur du champ de formulaire doit correspondre à la valeur spécifiée. Cet exemple indique que la liste ACL doit être définie sur public-read :<pre>{"acl": "public-read" }</pre><br />Cet exemple représente une méthode alternative pour indiquer que la liste ACL doit être définie sur public-read :<pre>[ "eq", "$acl", "public-read" ]</pre> | 
| Commence par | La valeur doit commencer par la valeur spécifiée. Cet exemple indique que la clé de l'objet doit commencer par user/user1 :<pre>["starts-with", "$key", "user/user1/"]</pre> | 
| Correspondance Content-Types dans une Comma-Separated liste | Content-Types les valeurs d'une `starts-with` condition contenant des virgules sont interprétées comme des listes. Chaque valeur de la liste doit remplir la condition pour que l'ensemble de la condition soit réussi. Par exemple, étant donné la condition suivante :<pre>["starts-with", "$Content-Type", "image/"]</pre><br />La valeur suivante satisferait à la condition :<pre>"image/jpg,image/png,image/gif"</pre><br />La valeur suivante ne satisferait pas à la condition :<pre>["image/jpg,text/plain"]</pre>Les éléments de données autres que ceux `Content-Type` sont traités comme des chaînes, indépendamment de la présence de virgules. | 
| Correspondance avec un contenu quelconque | Pour configurer la politique POST afin d'autoriser tout contenu dans un champ de formulaire, utilisez `starts-with` avec une valeur vide (« »). Cet exemple autorise n'importe quelle valeur pour `success_action_redirect` :<pre>["starts-with", "$success_action_redirect", ""]</pre> | 
| Spécification de plages | Pour les champs de formulaire qui acceptent une plage, séparez les limites supérieure et inférieure par une virgule. Cet exemple autorise une taille de fichier comprise entre 1 et 10 Mo :<pre>["content-length-range", 1048576, 10485760]</pre> | 

Les conditions spécifiques prises en charge dans une politique POST sont décrites dans[Conditions](#sigv4-PolicyConditions).

## Conditions
<a name="sigv4-PolicyConditions"></a>

`conditions`Dans une politique POST, il y a un tableau d'objets, dont chacun est utilisé pour valider la demande. Vous pouvez utiliser ces conditions pour restreindre ce qui est autorisé dans la demande. Par exemple, les conditions de politique précédentes exigent ce qui suit :

 
+ La demande doit spécifier le nom du `johnsmith` compartiment.
+ Le nom de la clé de l'objet doit comporter le `user/eric` préfixe.
+ L'ACL de l'objet doit être définie sur`public-read`.

Chaque champ de formulaire que vous spécifiez dans un formulaire (à l'exception des noms de champs `x-amz-signature` `file``policy`,, et des noms de champs `x-ignore-` comportant un préfixe) doit figurer dans la liste des conditions. 

**Note**  
 Toutes les variables du formulaire sont développées avant la validation de la politique POST. Par conséquent, toutes les correspondances de conditions doivent se faire par rapport aux champs de formulaire étendus. Supposons que vous souhaitiez limiter le nom de la clé de votre objet à un préfixe spécifique (`user/user1`). Dans ce cas, vous définissez le champ du formulaire clé sur`user/user1/${filename}`. Votre politique POST doit être `[ "starts-with", "$key", "user/user1/" ]` (ne pas entrer`[ "starts-with", "$key", "user/user1/${filename}" ]`). Pour de plus amples informations, veuillez consulter [Correspondance des conditions](#sigv4-ConditionMatching). 

Les conditions du document de politique sont décrites dans le tableau suivant.


| Nom d'élément | Description | 
| --- | --- | 
| acl | Spécifie la valeur ACL qui doit être utilisée lors de la soumission du formulaire. <br />Cette condition prend en charge la correspondance exacte et le type de correspondance des `starts-with` conditions discuté dans la section suivante. | 
| bucket | Spécifie le nom de compartiment acceptable. <br />Cette condition prend en charge le type de correspondance de condition correspondant exactement. | 
| content-length-range | Taille minimale et maximale autorisée pour le contenu téléchargé. <br />Cette `content-length-range` condition prend en charge le type de correspondance des conditions. | 
| Cache-Control`Content-Type`<br />`Content-Disposition`<br />`Content-Encoding`<br />`Expires` | REST-specific en-têtes. Pour de plus amples informations, veuillez consulter [POST Object](RESTObjectPOST.md).<br />Cette condition prend en charge la correspondance exacte et le type de correspondance des `starts-with` conditions. | 
| key | Le nom de clé acceptable ou un préfixe de l'objet chargé.<br />Cette condition prend en charge la correspondance exacte et le type de correspondance des `starts-with` conditions. | 
| success\_action\_redirect`redirect` | URL vers laquelle le client est redirigé en cas d'échec du chargement.<br />Cette condition prend en charge la correspondance exacte et le type de correspondance des `starts-with` conditions. | 
| success\_action\_status | Le code d'état renvoyé au client une fois le téléchargement réussi s'il n'`success_action_redirect`est pas spécifié.<br />Cette condition permet une correspondance exacte. | 
| x-amz-algorithm | Algorithme de signature qui doit être utilisé lors du calcul de signature. Pour AWS la version 4 de Signature, la valeur est`AWS4-HMAC-SHA256`. <br />Cette condition permet une correspondance exacte. | 
| x-amz-credential | Les informations d'identification que vous avez utilisées pour calculer la signature. Il fournit l'identifiant de la clé d'accès et les informations de portée identifiant la région et le service pour lesquels la signature est valide. Il doit s'agir de la même étendue que celle que vous avez utilisée pour calculer la clé de signature pour le calcul de la signature. <br />Il s'agit d'une chaîne de la forme suivante :<br />`{{<your-access-key-id>}}/{{<date>}}/{{<aws-region>}}/{{<aws-service>}}/aws4_request`<br />Par exemple :<br />` AKIAIOSFODNN7EXAMPLE/20130728/us-east-1/s3/aws4_request`<br />Pour Amazon S3, la chaîne aws-service est. `s3` Pour obtenir la liste des `aws-region` chaînes Amazon S3, consultez la section [ Régions et points de terminaison ](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) dans le *Références générales AWS*. Cela est obligatoire si un document de politique POST est inclus dans la demande.<br />Cette condition permet une correspondance exacte. | 
| x-amz-date | La valeur de date spécifiée dans la chaîne au format ISO8601. Par exemple, `20130728T000000Z`. La date doit être la même que celle que vous avez utilisée lors de la création de la clé de signature pour le calcul de la signature.<br />Cela est obligatoire si un document de politique POST est inclus dans la demande.<br />Cette condition permet une correspondance exacte. | 
| x-amz-security-token | Jeton DevPay de sécurité Amazon. <br />Chaque demande qui utilise Amazon DevPay nécessite deux champs de `x-amz-security-token` formulaire : un pour le jeton du produit et un pour le jeton utilisateur. Par conséquent, les valeurs doivent être séparées par des virgules. Par exemple, si le jeton utilisateur est `eW91dHViZQ==` et que le jeton de produit l'est`b0hnNVNKWVJIQTA=`, vous définissez l'entrée de politique POST sur :`{ "x-amz-security-token": "eW91dHViZQ==,b0hnNVNKWVJIQTA=" }`.<br />Pour plus d'informations sur Amazon DevPay, consultez la section [ Utilisation DevPay ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingDevPay.html) dans le guide de l'utilisateur d'*Amazon Simple Storage Service*. | 
| x-amz-meta-\* | User-specified métadonnées. <br />Cette condition prend en charge la correspondance exacte et le type de correspondance des `starts-with` conditions.  | 
| x-amz-\* | Voir POST Object ([POST Object](RESTObjectPOST.md)pour les autres `x-amz-*` en-têtes). <br />Cette condition permet une correspondance exacte. | 

**Note**  
 Si votre boîte à outils ajoute d'autres champs de formulaire (par exemple, Flash ajoute`filename`), vous devez les ajouter au document de politique POST. Si vous pouvez contrôler cette fonctionnalité, ajoutez le préfixe `x-ignore-` au champ afin qu'Amazon S3 ignore la fonction et que les versions futures de cette fonction ne soient pas affectées. 

## Echappement de caractère
<a name="sigv4-HTTPPOSTEscaping"></a>

Les caractères qui doivent être supprimés dans un document de politique POST sont décrits dans le tableau suivant.


|  Séquence d'échappement  |  Description  | 
| --- | --- | 
| \\\\ | Barre oblique inverse | 
| \\$ | Symbole du dollar | 
| \\b | Retour arrière | 
| \\f | Saut de page | 
| \\n | Nouvelle ligne | 
| \\r | Retour chariot | 
| \\t | Tabulation horizontale | 
| \\v | Tabulation verticale | 
| \\ u {{xxxx}} | Tous les caractères Unicode | 

Maintenant que vous connaissez les formulaires et les politiques, et que vous comprenez comment fonctionne la signature, vous pouvez essayer un exemple de téléchargement POST. Vous devez écrire le code pour calculer la signature. L'exemple fournit un exemple de formulaire et une politique POST que vous pouvez utiliser pour tester vos calculs de signature. Pour de plus amples informations, veuillez consulter [Exemple : Browser-Based téléchargement à l'aide de HTTP POST (à l'aide de AWS Signature (version 4)](sigv4-post-example.md).