

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.

# Formulaires HTML (AWS signature (version 2)
<a name="HTTPPOSTForms"></a>

**Topics**
+ [Encodage des formulaires HTML](#HTTPPOSTFormEncoding)
+ [Déclaration de formulaire HTML](#HTTPPOSTFormDeclaration)
+ [Champs de formulaire HTML](#HTTPPOSTFormFields)
+ [Elaboration de la stratégie](#HTTPPOSTConstructPolicy)
+ [Élaboration d'une signature](#HTTPPOSTConstructingPolicySignature)
+ [Redirection](#HTTPPOSTConstructingPolicyRedirection)

Lorsque vous communiquez avec Amazon S3, vous utilisez normalement l'API REST ou SOAP pour effectuer des opérations telles que put, get, delete, etc. Avec POST, les utilisateurs téléchargent les données directement sur Amazon S3 via leur navigateur, qui ne peut pas exécuter l'API SOAP ni créer de demande REST `PUT`.

**Note**  
 Les SOAP API pour Amazon S3 ne sont pas disponibles pour les nouveaux clients. Leur fin de vie est prévue le 31 août 2025. Nous vous recommandons d'utiliser l'API REST ou les kits de AWS développement logiciel (SDK). 

Utilisez les formulaires HTML pour autoriser les utilisateurs à télécharger du contenu vers Amazon S3 en utilisant leur navigateur. Les formulaires HTML se composent d'une déclaration de formulaire et de champs de formulaire. La déclaration de formulaire contient des informations de haut niveau sur la demande. Les champs de formulaire contiennent des informations détaillées sur la demande, ainsi que sur la stratégie utilisée pour authentifier cette dernière et garantir qu'elle répond aux conditions que vous spécifiez.

**Note**  
Les limites et les données de formulaire (à l'exclusion du contenu du fichier) ne peuvent pas dépasser 20 Ko.

Cette section explique comment utiliser les formulaires HTML.

## Encodage des formulaires HTML
<a name="HTTPPOSTFormEncoding"></a>

Le formulaire et la politique doivent être UTF-8 codés. Vous pouvez appliquer le UTF-8 codage au formulaire en le spécifiant dans l'en-tête HTML ou en tant qu'en-tête de demande.

**Note**  
 La déclaration d'un formulaire HTML n'accepte pas les paramètres d'authentification par chaîne d'interrogation. 

Voici un exemple de UTF-8 codage dans le titre HTML :

```
1. <html>
2.   <head>
3.     ...
4.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5.     ...
6.   </head>
7.   <body>
```

Voici un exemple de UTF-8 codage dans un en-tête de demande :

```
1. Content-Type: text/html; charset=UTF-8
```

## Déclaration de formulaire HTML
<a name="HTTPPOSTFormDeclaration"></a>

La déclaration d'un formulaire possède trois composants : l'action, la méthode et le type d'encadrement. Si l'une quelconque de ces valeurs est définie de façon incorrecte, la demande échoue.

L'action spécifie l'URL qui doit traiter la demande et qu'il convient de définir sur l'URL du compartiment. Par exemple, si le nom de votre compartiment est `awsexamplebucket1` et que la Région est USA Ouest (Californie du Nord), l'URL est `https://awsexamplebucket1.s3.us-west-1.amazonaws.com/`.

**Note**  
Le nom de clé est spécifié dans un champ du formulaire.

La méthode doit être POST.

Le type de pièce jointe (enctype) doit être spécifié et défini sur multipart/form -data pour les téléchargements de fichiers et les téléchargements de zones de texte. Pour de plus amples informations, veuillez consulter la [RFC 1867](http://www.ietf.org/rfc/rfc1867.txt).

**Example**  
L'exemple suivant est une déclaration de formulaire pour le compartiment « awsexamplebucket1 ».  

```
1. <form action="https://awsexamplebucket1.s3.us-west-1.amazonaws.com/" method="post"
2. 
3. enctype="multipart/form-data">
```

## Champs de formulaire HTML
<a name="HTTPPOSTFormFields"></a>

Le tableau ci-dessous décrit les champs qui peuvent être utilisés au sein d'un formulaire HTML.

**Note**  
La variable `${filename}` est automatiquement remplacée par le nom du fichier fourni par l'utilisateur et est reconnue par l'ensemble des champs de formulaire. Si le navigateur ou le client fournit un chemin d'accès complet ou partiel au fichier, seul le texte suivant la dernière barre oblique (/) ou barre oblique inverse (\\) sera utilisé. Par exemple, « C:\\Program Files\\dossier1\\fichier.txt » est interprété comme « fichier.txt ». Si aucun fichier ni nom de fichier n'est fourni, la variable est remplacée par une chaîne vide.


| Nom de champ | Description | Obligatoire | 
| --- | --- | --- | 
| AWSAccessKeyId | L'ID de clé d' AWS accès du propriétaire du bucket qui accorde à un utilisateur anonyme l'accès pour une demande qui répond à l'ensemble de contraintes de la politique. Ce champ est requis si la demande inclut un document de stratégie. | Conditionnel | 
| acl | Une liste de contrôle d'accès (ACL) Amazon S3 Si une liste de contrôle d'accès non valide est spécifiée, une erreur est générée.<br />Type : Chaîne<br />Valeur par défaut : private<br /> Valeurs valides : `private \| public-read \| public-read-write \| aws-exec-read \| authenticated-read \| bucket-owner-read \| bucket-owner-full-control `  | Non | 
| Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires | REST-specific en-têtes. Pour de plus amples informations, veuillez consulter [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html). | Non | 
| key | Nom de la clé chargée.<br />Pour utiliser le nom de fichier fourni par l'utilisateur, utilisez la variable ${filename}. Par exemple, si l'utilisateur Betty charge le fichier lolcatz.jpg et que vous spécifiez/user/betty/$ {filename}, le fichier est enregistré sous le nom//lolcatz.jpg. user/betty<br />Pour plus d’informations, consultez [Utiliser les métadonnées d’un objet](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html). | Oui | 
| policy | Stratégie de sécurité décrivant ce qui est autorisé dans la demande. Les demandes sans stratégie de sécurité sont considérées anonymes et aboutiront uniquement sur des compartiments publiquement accessibles en écriture.  | Non | 
| success\_action\_redirect, redirect | URL vers laquelle le client est redirigé en cas d'échec du chargement. Amazon S3 ajoute à l'URL les valeurs de compartiment, de clé et etag comme paramètres de la chaîne d'interrogation.<br />Si success\_action\_redirect n'est pas spécifié, Amazon S3 retourne le type de document vide spécifié dans le champ success\_action\_status.<br />Si Amazon S3 ne peut pas interpréter l'URL, le champ est ignoré.<br />Si le téléchargement échoue, Amazon S3 affiche une erreur et ne redirige pas l'utilisateur vers une URL.<br />Pour de plus amples informations, veuillez consulter [Redirection](#HTTPPOSTConstructingPolicyRedirection).   Le nom du champ de redirection est obsolète et la prise en charge du nom du champ de redirection sera supprimée à l'avenir.   | Non | 
| success\_action\_status | Code de statut retourné au client lors du succès du chargement si success\_action\_redirect n'est pas spécifié.<br />Les valeurs valides sont 200, 201 et 204 (par défaut).<br />Si la valeur est définie sur 200 ou 204, Amazon S3 retourne un document vide avec un code de statut égal à 200 ou 204.<br />Si la valeur est définie sur 201, Amazon S3 retourne un document XML avec un code de statut égal à 201. Pour des informations sur le contenu du document XML, veuillez consulter [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html).<br />Si la valeur n'est pas définie ou si elle est définie sur une valeur non valide, Amazon S3 retourne un document vide avec un code de statut égal à 204.  Certaines versions d'Adobe Flash Player ne traitent pas correctement les réponses HTTP dont le corps est vide. Pour prendre en charge les chargements via Adobe Flash, nous vous recommandons de définir `success_action_status` sur 201.  | Non | 
| signature | La signature HMAC construite à l'aide de la clé d'accès secrète qui correspond à celle fournieAWSAccessKeyId. Ce champ est requis si un document de stratégie est inclus dans la demande. <br />Pour plus d'informations, consultez la section Gestion des [ identités et des accès pour Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html). | Conditionnel | 
| x-amz-security-token | Jeton de sécurité utilisé par les informations d'identification de session<br /> Si la demande utilise Amazon DevPay , elle nécessite deux champs de `x-amz-security-token` formulaire : un pour le jeton du produit et un pour le jeton utilisateur.<br />Si la demande utilise les informations d'identification de session, elle requiert un seul formulaire`x-amz-security-token`. Pour de plus amples informations, veuillez consulter [Informations d'identification de sécurité temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dans le *Guide de l'utilisateur IAM*.<br /> | Non | 
| Autres noms de champs dotés du préfixe x-amz-meta- | User-specified métadonnées. <br />Amazon S3 ne valide pas et n'utilise pas ces données.<br />Pour de plus amples informations, veuillez consulter [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html). | Non | 
| dans le fichier | Fichier ou contenu de texte. <br />Le fichier ou le contenu doit être le dernier champ du formulaire. Tout champ situé au-dessous est ignoré.<br />Vous ne pouvez pas charger plus d'un fichier à la fois. | Oui | 

## Elaboration de la stratégie
<a name="HTTPPOSTConstructPolicy"></a>

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

La politique est un UTF-8 document Base64-encoded JSON qui spécifie les conditions que la demande doit remplir et qui est utilisé pour authentifier le contenu. En fonction de la manière dont vous concevez vos documents de stratégie, vous pouvez les utiliser par chargement, par utilisateur, pour tous les chargements ou selon d'autres conceptions répondant à vos besoins.

**Note**  
 Le document de stratégie est facultatif, mais nous recommandons vivement son utilisation plutôt que de rendre un compartiment publiquement accessible en écriture. 

Voici un exemple de document de stratégie :

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

Le document de stratégie contient l'expiration et les conditions.

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

L'élément expiration spécifie la date d'expiration de la stratégie au format de date UTC, conformément à la norme ISO 8601. Par exemple, « 2007-12-01 T12:00:00.000Z » indique que la politique n'est pas valide après minuit UTC le 01/12/2007. Une date d'expiration est requise dans une stratégie.

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

Les conditions figurant dans le document de stratégie valident le contenu de l'objet chargé. Chaque champ de formulaire que vous spécifiez dans le formulaire (à l'exception des noms de signatureAWSAccessKeyId, de fichier, de politique et de champ qui ont un préfixe x-ignore-) doit être inclus dans la liste des conditions. 

**Note**  
Si plusieurs champs ont le même nom, les valeurs doivent être séparées par des virgules. Par exemple, si vous avez deux champs nommés « x-amz-meta-tag » et que le premier a la valeur « Ninja » alors que le second a la valeur « Stallman », vous devez définir le document de stratégie sur `Ninja,Stallman`.  
 Toutes les variables figurant dans le formulaire sont développées avant la validation de la stratégie. Par conséquent, toutes les correspondances des conditions doivent être effectuées par rapport aux champs développés. Par exemple, si vous définissez le champ clé sur `user/betty/${filename}`, la stratégie peut être `[ "starts-with", "$key", "user/betty/" ]`. Ne saisissez pas `[ "starts-with", "$key", "user/betty/${filename}" ]`. Pour de plus amples informations, veuillez consulter [Correspondance des conditions](#ConditionMatching). 

Le tableau ci-dessous décrit les conditions d'un document de stratégie.


| Nom d'élément | Description | 
| --- | --- | 
| liste acl | Spécifie les conditions que la liste ACL doit respecter. <br />Prend en charge la correspondance exacte et `starts-with`.  | 
| content-length-range | Spécifie les tailles minimale et maximale autorisées pour le contenu chargé. <br />Prend en charge la correspondance de plage. | 
| Cache-Control, Content-Type,, Content-DispositionContent-Encoding, Expire | REST-specific en-têtes. <br />Prend en charge la correspondance exacte et `starts-with`. | 
| key | Nom de la clé chargée.<br />Prend en charge la correspondance exacte et `starts-with`.  | 
| success\_action\_redirect, redirect  | URL vers laquelle le client est redirigé en cas d'échec du chargement.<br />Prend en charge la correspondance exacte et `starts-with`.  | 
| success\_action\_status | Code de statut retourné au client lors du succès du chargement si success\_action\_redirect n'est pas spécifié.<br />Prend en charge la 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 le token produit `b0hnNVNKWVJIQTA=`, vous définissez l'entrée de stratégie sur : `{ "x-amz-security-token": "eW91dHViZQ==,b0hnNVNKWVJIQTA=" }`. | 
| Autres noms de champs dotés du préfixe x-amz-meta- | User-specified métadonnées. <br />Prend en charge la correspondance exacte et `starts-with`.  | 

**Note**  
 Si votre boîte à outils ajoute des champs supplémentaires (p. ex. : Flash ajoute le nom de fichier), vous devez les ajouter dans le document de stratégie. 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. 

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

Le tableau ci-dessous décrit les types de correspondance des conditions. Vous devez spécifier une seule condition pour chaque champ de formulaire que vous spécifiez dans le formulaire, mais vous pouvez créer des critères de correspondance plus complexes en spécifiant plusieurs conditions pour un champ de formulaire.


|  Condition  |  Description  | 
| --- | --- | 
| Correspondances exactes | Les correspondances exactes vérifient que les champs correspondent à des valeurs spécifiques. 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 | Si la valeur doit commencer par une certaine valeur, utilisez le mot clé starts-with. Cet exemple indique que la clé doit commencer par user/betty :<pre>["starts-with", "$key", "user/betty/"]</pre> | 
| Correspondance avec un contenu quelconque | Pour configurer la stratégie de manière à autoriser un contenu quelconque dans un champ, utilisez starts-with avec une valeur vide. Cet exemple autorise une valeur quelconque pour success\_action\_redirect :<pre>["starts-with", "$success_action_redirect", ""]</pre> | 
| Spécification de plages | Pour les champs qui acceptent des plages, séparez les seuils inférieur et supérieur de plage par une virgule. Cet exemple autorise une taille de fichier comprise entre 1 et 10 mégaoctets :<pre>["content-length-range", 1048579, 10485760]</pre> | 

### Échappement de caractère
<a name="HTTPPOSTEscaping"></a>

Le tableau suivant décrit les caractères qui doivent être placés dans une séquence d'échappement au sein d'un document de stratégie.


|  Séquence d'échappement  |  Description  | 
| --- | --- | 
| \\\\ | Barre oblique inverse | 
| \\$ | Symbole 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 | 

## Élaboration d'une signature
<a name="HTTPPOSTConstructingPolicySignature"></a>


| Étape | Description | 
| --- | --- | 
| 1 | Encodez la politique à l'aide UTF-8 de. | 
| 2 | Encodez ces UTF-8 octets à l'aide de Base64. | 
| 3 | Signez la politique à l'aide de votre clé d'accès secrète à l'aide du HMACSHA-1. | 
| 4 | Encodez la SHA-1 signature à l'aide de Base64. | 

Pour des informations générales sur l'authentification, consultez la section Gestion des [ identités et des accès pour Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html).

## Redirection
<a name="HTTPPOSTConstructingPolicyRedirection"></a>

Cette section décrit comment traiter les redirections.

### Redirection générale
<a name="HTTPPOSTGeneralRedirection"></a>

Une fois la demande POST terminée, l'utilisateur est redirigé à l'emplacement que vous avez spécifié dans le champ `success_action_redirect`. Si Amazon S3 ne peut pas interpréter l'URL, le champ `success_action_redirect` est ignoré.

Si `success_action_redirect` n'est pas spécifié, Amazon S3 retourne le type de document vide spécifié dans le champ `success_action_status`.

Si la demande POST échoue, Amazon S3 affiche une erreur et ne fournit pas de redirection.

### Pre-upload redirection
<a name="HTTPPOSTPreUpload"></a>

Si votre compartiment a été créé à l'aide de < CreateBucketConfiguration >, vos utilisateurs finaux peuvent avoir besoin d'une redirection. Si cela se produit, certains navigateurs peuvent traiter la redirection de façon incorrecte. Cela est relativement rare, mais a le plus de chances de se produire juste après la création d'un compartiment.