

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.

# Gérez les comportements de demande et de réponse pour les distributions Lightsail
<a name="amazon-lightsail-distribution-request-and-response"></a>

Dans ce guide, nous décrivons le comportement de votre distribution Amazon Lightsail lors du traitement et du transfert des demandes vers votre point d'origine, ainsi que du traitement des réponses provenant de votre point d'origine. Pour plus d'informations sur les distributions, veuillez consulter [Distributions de réseaux de diffusion de contenu](amazon-lightsail-content-delivery-network-distributions.md).

**Rubriques**
+ [Comment votre distribution traite et transfère des requêtes vers votre origine](#distribution-process-and-forward-requests)
+ [Comment votre distribution traite les réponses provenant de votre origine](#distribution-process-responses)

## Comment votre distribution traite et transfère des requêtes vers votre origine
<a name="distribution-process-and-forward-requests"></a>

Cette rubrique contient des informations sur la façon dont votre distribution traite les requêtes utilisateur et les transmet à votre origine.

**Table des matières**
+ [Authentification](#RequestCustomClientAuth)
+ [Durée de mise en cache](#RequestCustomCaching)
+ [Adresses IP client](#RequestCustomIPAddresses)
+ [Authentification SSL côté client](#RequestCustomClientSideSslAuth)
+ [Compression](#RequestCustomCompression)
+ [Demandes conditionnelles](#RequestCustomConditionalGETs)
+ [Cookies](#RequestCustomCookies)
+ [Partage des ressources cross-origin (CORS)](#request-custom-cors)
+ [Chiffrement](#RequestCustomEncryption)
+ [Demandes GET qui incluent un corps de texte](#RequestCustom-get-body)
+ [Méthodes HTTP](#RequestCustomHTTPMethods)
+ [En-têtes de requête HTTP et comportement de distribution](#request-custom-headers-behavior)
+ [Version de HTTP](#RequestCustomHTTPVersion)
+ [Longueur maximale d'une requête et longueur maximale d'une URL](#RequestCustomMaxRequestStringLength)
+ [OCSP Stapling](#request-custom-ocsp-stapling)
+ [Connexions persistantes](#request-custom-persistent-connections)
+ [Protocoles](#RequestCustomProtocols)
+ [Chaînes de requête](#RequestCustomQueryStrings)
+ [Délai d’attente et tentatives de connexion à l’origine](#custom-origin-timeout-attempts)
+ [Délai de réponse de l’origine](#request-custom-request-timeout)
+ [Requêtes simultanées pour le même objet (pics de trafic)](#request-custom-traffic-spikes)
+ [En-tête d'agent utilisateur](#request-custom-user-agent-header)

### Authentification
<a name="RequestCustomClientAuth"></a>

Pour les requêtes `DELETE`, `GET`, `HEAD`, `PATCH`, `POST` et `PUT`, si vous configurez votre distribution pour qu'elle transmette l'en-tête `Authorization` à votre origine, vous pouvez configurer votre serveur d'origine pour qu'il demande une authentification du client.

Pour les requêtes `OPTIONS`, vous pouvez configurer votre serveur d'origine pour qu'il demande une authentification du client uniquement si vous utilisez les paramètres de distribution suivants :
+ Configurez votre distribution pour transférer l'en-tête `Authorization` vers votre origine.
+ Configurer votre distribution de manière à ne pas mettre en cache les réponses aux requêtes `OPTIONS`.

Vous pouvez configurer votre distribution de sorte qu'elle transmette des requêtes à votre origine à l'aide des protocoles HTTP ou HTTPS.

### Durée de mise en cache
<a name="RequestCustomCaching"></a>

Pour contrôler la durée pendant laquelle les objets restent dans le cache de votre distribution avant que celle-ci ne transmette une autre requête à votre origine, vous pouvez :
+ Configurer votre origine pour ajouter un `Cache-Control` ou un champ d’en-tête `Expires` à chaque objet.
+ Utiliser la valeur par défaut de 1 jour pour la durée de vie du cache (TTL).

Pour de plus amples informations, veuillez consulter les [paramètres de distribution avancés](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-changing-default-cache-behavior#changing-caching-behavior-distribution-advanced-settings).

### Adresses IP client
<a name="RequestCustomIPAddresses"></a>

Si un utilisateur envoie une requête à votre distribution et n'inclut pas un en-tête de requête `X-Forwarded-For`, votre distribution extrait l'adresse IP de l'utilisateur de la connexion TCP, ajoute un en-tête `X-Forwarded-For` qui inclut l'adresse IP et transmet la requête à l'origine. Par exemple, si votre distribution extrait l'adresse IP `192.0.2.2` de la connexion TCP, il transmet l'en-tête suivant à l'origine :

`X-Forwarded-For: 192.0.2.2`

Si un utilisateur envoie une requête à votre distribution et inclut un en-tête de requête `X-Forwarded-For`, votre distribution extrait l'adresse IP de l'utilisateur de la connexion TCP, l'ajoute à la fin de l'en-tête `X-Forwarded-For` et transmet la requête à l'origine. Par exemple, si la requête de l'utilisateur inclut `X-Forwarded-For: 192.0.2.4,192.0.2.3` et que votre distribution extrait l'adresse IP `192.0.2.2` de la connexion TCP, il transmet l'en-tête suivant à l'origine :

`X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2`

Certaines applications, comme des équilibreurs de charge, des pare-feu d'application web, des proxys inverses, des systèmes de prévention d'intrusion et des passerelles API Gateway, ajoutent l'adresse IP au serveur périphérique de distribution qui a transmis la requête à la fin de l'en-tête `X-Forwarded-For`. Par exemple, si votre distribution inclut `X-Forwarded-For: 192.0.2.2` dans une requête qu'il transmet à ELB et si l'adresse IP du serveur périphérique de distribution est 192.0.2.199, la requête reçue par votre instance contient l'en-tête suivant :

`X-Forwarded-For: 192.0.2.2,192.0.2.199`

**Note**  
L'`X-Forwarded-For`en-tête contient des IPv4 adresses (telles que 192.0.2.44) et des IPv6 adresses (telles que 2001:0 db 8:85 a 3:0000:0000:8 a2e : 0370:7334).

### Authentification SSL côté client
<a name="RequestCustomClientSideSslAuth"></a>

Les distributions Lightsail ne prennent pas en charge l'authentification client à l'aide de certificats SSL côté client. Si une origine demande un certificat côté client, votre distribution supprime la requête. 

### Compression
<a name="RequestCustomCompression"></a>

Les distributions Lightsail transmettent les demandes contenant les valeurs de champ `Accept-Encoding` et. `"identity"` `"gzip"`

### Demandes conditionnelles
<a name="RequestCustomConditionalGETs"></a>

Lorsque votre distribution reçoit une requête d'objet ayant expiré d'un cache périphérique, il transmet la requête à votre origine pour obtenir la dernière version de l'objet ou avoir la confirmation de l'origine que le cache périphérique de votre distribution dispose déjà de la dernière version. Généralement, lorsque l'origine a envoyé l'objet à votre distribution la dernière fois, il a inclus une valeur `ETag`, une valeur `LastModified`, ou les deux, dans la réponse. Dans la nouvelle requête que votre distribution transfère à votre origine, votre distribution ajoute l'une des options suivantes ou les deux :
+ Un en-tête `If-Match` ou `If-None-Match` qui contient la valeur `ETag` pour la version expirée de l’objet.
+ Un en-tête `If-Modified-Since` qui contient la valeur `LastModified` pour la version expirée de l’objet.

L'origine utilise ces informations pour déterminer si l'objet a été mis à jour, et donc, s'il doit renvoyer l'objet entier à votre distribution ou uniquement un code de statut HTTP 304 (non modifié).

### Cookies
<a name="RequestCustomCookies"></a>

Vous pouvez configurer votre distribution de manière à transmettre les cookies à votre origine. Pour de plus amples informations, veuillez consulter les [paramètres de distribution avancés](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-changing-default-cache-behavior#changing-caching-behavior-distribution-advanced-settings).

### Partage des ressources cross-origin (CORS)
<a name="request-custom-cors"></a>

Si vous souhaitez que votre distribution respecte les paramètres de partage des ressources cross-origine, configurez votre origine de manière à ce qu'elle transmette l'en-tête `Origin` à votre origine.

### Chiffrement
<a name="RequestCustomEncryption"></a>

Vous pouvez exiger que les utilisateurs se connectent à votre distribution en utilisant HTTPS et que votre distribution transfère les requêtes à votre origine en utilisant HTTP ou HTTPS. 

Votre distribution transmet les requêtes HTTPS à votre origine à l' SSLv3aide des protocoles TLSv1 .0, TLSv1 .1 et TLSv1 .2. Les autres versions de SSL et TLS ne sont pas prises en charge.

### Demandes GET qui incluent un corps de texte
<a name="RequestCustom-get-body"></a>

Si une requête utilisateur `GET` inclut un corps de texte, votre distribution renvoie un code de statut HTTP 403 (Interdit) à l'utilisateur.

### Méthodes HTTP
<a name="RequestCustomHTTPMethods"></a>

Si vous configurez votre distribution pour qu'elle traite toutes les méthodes HTTP qu'il prend en charge, votre distribution accepte les requêtes utilisateur suivantes et les transmet à votre origine :
+ `DELETE`
+ `GET`
+ `HEAD`
+ `OPTIONS`
+ `PATCH`
+ `POST`
+ `PUT`

Votre distribution met toujours en cache les réponses aux requêtes `GET` et `HEAD`. Vous pouvez également configurer votre distribution pour mettre en cache les réponses aux requêtes `OPTIONS`. Votre distribution ne met pas en cache les réponses aux requêtes qui utilisent d'autres méthodes.

Pour plus d'informations sur la façon de configurer si votre origine traite ces méthodes, consultez la documentation de votre origine.

**Important**  
Si vous configurez votre distribution pour qu'elle accepte et transmette à votre origine toutes les méthodes HTTP prises en charge par votre distribution, configurez votre serveur d'origine pour qu'il traite toutes les méthodes. Par exemple, si vous configurez votre distribution pour accepter et transmettre ces méthodes parce que vous voulez utiliser `POST`, vous devez configurer votre serveur d'origine de manière à gérer correctement les requêtes `DELETE`, afin que les utilisateurs ne puissent pas supprimer les ressources que vous ne les autorisez pas à supprimer. Pour plus d’informations, consultez la documentation de votre serveur HTTP. 

### En-têtes de requête HTTP et comportement de distribution
<a name="request-custom-headers-behavior"></a>

Le tableau suivant répertorie les en-têtes de requête HTTP que vous pouvez transmettre à votre origine (avec les exceptions qui sont notées). Pour chaque en-tête, la liste comprend des informations sur les points suivants :
+ **Supported (Pris en charge)** : si vous pouvez configurer votre distribution pour mettre en cache des objets selon des valeurs d'en-tête pour cet en-tête. 

  Vous pouvez configurer votre distribution de sorte qu'il mette en cache des objets selon les valeurs des en-têtes `Date` et `User-Agent`, mais cela n'est pas recommandé. Ces en-têtes possèdent de nombreuses valeurs possibles, et la mise en cache selon leurs valeurs entraînerait la transmission par votre distribution de beaucoup plus de requêtes à votre origine.
+ **Comportement si vous n'avez pas configuré** : le comportement de votre distribution si vous ne configurez pas pour qu'il transmette l'en-tête à votre origine, ce qui entraîne la mise en cache par de vos objets en fonction des valeurs d'en-tête.
+ **En-tête** : en-têtes définis par un tiers

  **Pris en charge** : oui

  **Comportement si non configuré** : votre distribution transmet les en-têtes à votre origine.
+ **En-tête** : `Accept`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Accept-Charset`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Accept-Encoding`

  **Pris en charge** : oui

  **Comportement si non configuré** : votre distribution transmet `Accept-Encoding: gzip` à votre origine si la valeur contient `gzip`. Si la valeur ne contient pas `gzip`, votre distribution supprime le champ d'en-tête `Accept-Encoding` avant de transmettre la requête à votre origine.
+ **En-tête** : `Accept-Language`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Authorization`

  **Pris en charge** : oui

  **Comportement si non configuré** :
  + Requêtes `GET` et `HEAD` : votre distribution supprime le champ d'en-tête `Authorization` avant de transmettre la requête à votre origine.
  + Requêtes `OPTIONS` : votre distribution supprime le champ d'en-tête `Authorization` avant de transmettre la requête à votre origine si vous configurez votre distribution pour qu'elle mette en cache les réponses aux requêtes `OPTIONS`.

    Votre distribution transmet le champ d'en-tête `Authorization` à votre origine si vous ne configurez pas votre distribution pour qu'elle mette en cache les réponses aux requêtes OPTIONS.
  + Requêtes `DELETE`, `PATCH`, `POST` et `PUT` : votre distribution ne supprime pas le champ d'en-tête avant de transmettre la requête à votre origine.
+ **En-tête** : `Cache-Control`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `CloudFront-Forwarded-Proto`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.
+ **En-tête** : `CloudFront-Is-Desktop-Viewer`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.
+ **En-tête** : `CloudFront-Is-Mobile-Viewer`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.
+ **En-tête** : `CloudFront-Is-Tablet-Viewer`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.
+ **En-tête** : `CloudFront-Viewer-Country`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.
+ **En-tête** : `Connection`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution remplace cet en-tête par `Connection: Keep-Alive` avant de transmettre la requête à votre origine.
+ **En-tête** : `Content-Length`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Content-MD5`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Content-Type`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Cookie`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : si vous configurez votre distribution pour transmettre des cookies, elle transmettra l'en-tête `Cookie` à votre origine. Sinon, votre distribution supprime le champ d'en-tête `Cookie`.
+ **En-tête** : `Date`

  **Pris en charge** : oui, mais non recommandé

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Expect`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `From`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Host`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution définit la valeur sur le nom de domaine de l'origine qui est associée à l'objet demandé. 
+ **En-tête** : `If-Match`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `If-Modified-Since`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `If-None-Match`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `If-Range`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `If-Unmodified-Since`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Max-Forwards`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Origin`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Pragma`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Proxy-Authenticate`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Proxy-Authorization`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Proxy-Connection`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Range`

  **Pris en charge** : oui, par défaut

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Referer`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Request-Range`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transmet l'en-tête à votre origine.
+ **En-tête** : `TE`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Trailer`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `Transfer-Encoding`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Upgrade`

  **Pris en charge** : non (sauf pour WebSocket les connexions)

  **Comportement s'il n'est pas configuré** : votre distribution supprime l'en-tête, sauf si vous avez établi une WebSocket connexion.
+ **En-tête** : `User-Agent`

  **Pris en charge** : oui, mais non recommandé

  **Behavior if not configured (Comportement si non configuré)** : votre distribution remplace la valeur du champ d'en-tête par `Amazon CloudFront`.
+ **En-tête** : `Via`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `Warning`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `X-Amz-Cf-Id`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution ajoute l'en-tête à la requête de l'utilisateur avant de transmettre la requête à votre origine. La valeur d’en-tête contient une chaîne chiffrée qui identifie de façon unique la demande.
+ **En-tête** : `X-Edge-*`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime tous les en-têtes `X-Edge-*`.
+ **En-tête** : `X-Forwarded-For`

  **Pris en charge** : oui

  **Behavior if not configured (Comportement si non configuré)** : votre distribution transfère l'en-tête vers l'origine.
+ **En-tête** : `X-Forwarded-Proto`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.
+ **En-tête** : `X-Real-IP`

  **Pris en charge** : non

  **Behavior if not configured (Comportement si non configuré)** : votre distribution supprime l'en-tête.

### Version de HTTP
<a name="RequestCustomHTTPVersion"></a>

Votre distribution transmet les requêtes à votre origine à l'aide de HTTP/1.1.

### Longueur maximale d’une demande et longueur maximale d’une URL
<a name="RequestCustomMaxRequestStringLength"></a>

La longueur maximale d’une demande, avec le chemin, la chaîne de requête (le cas échéant) et les en-têtes inclus, est de 20480 octets.

Votre distribution crée une URL à partir de la requête. La longueur maximale de cette URL est de 8 192 caractères.

Si une requête ou une URL dépasse ces limites, votre distribution renvoie le code de statut HTTP 413 (Entité de requête trop volumineuse) à l'utilisateur, puis met fin à la connexion TCP avec ce dernier.

### OCSP Stapling
<a name="request-custom-ocsp-stapling"></a>

Lorsqu'une visionneuse soumet une requête HTTPS pour un objet, votre distribution ou la visionneuse doit vérifier auprès de l'autorité de certification (CA) que le certificat SSL pour le domaine n'a pas été révoqué. OCSP Stapling accélère la validation du certificat en permettant à votre distribution de valider le certificat et de mettre en cache la réponse de l'autorité de certification. Le client n'a donc pas besoin de valider le certificat directement auprès de l'autorité de certification.

L'amélioration des performances d'OCSP Stapling est plus prononcée lorsque votre distribution reçoit de nombreuses requêtes HTTPS pour des objets dans le même domaine. Chaque serveur d'un emplacement périphérique d'une distribution doit soumettre une requête de validation distincte. Lorsque votre distribution reçoit de nombreuses requêtes HTTPS pour le même domaine, chaque serveur dans l'emplacement périphérique reçoit rapidement une réponse de l'autorité de certification qu'il peut « agrafer » (staple) dans un paquet de l'établissement de la liaison SSL ; lorsque l'utilisateur a vérifié que le certificat est valide, votre distribution peut servir l'objet demandé. Si votre distribution ne reçoit pas beaucoup de trafic dans un emplacement périphérique, il est plus probable que les nouvelles requêtes soient acheminées vers un serveur qui n'a pas encore validé le certificat auprès de l'autorité de certification. Dans ce cas, l'utilisateur exécute séparément l'étape de validation et le serveur de distribution sert l'objet. Ce serveur de distribution soumet également une requête de validation à l'autorité de certification. De ce fait, la fois suivante qu'il reçoit une requête incluant le même nom de domaine, il dispose d'une réponse de validation de l'autorité de certification.

### Connexions persistantes
<a name="request-custom-persistent-connections"></a>

Lorsque votre distribution obtient une réponse de votre origine, il essaye de maintenir la connexion pendant plusieurs secondes au cas où une autre requête arrive au cours de cette période. Maintenir une connexion persistante permet de gagner le temps requis pour ré-établir la connexion TCP et établir une autre liaison TLS pour les demandes ultérieures.

### Protocoles
<a name="RequestCustomProtocols"></a>

Votre distribution transmet les requêtes HTTP ou HTTPS au serveur d'origine en fonction de la valeur du champ de **politique du protocole Origin** dans la console Lightsail. **Dans la console Lightsail, les options **sont HTTP uniquement et HTTPS** uniquement.** 

Si vous spécifiez **HTTP Only (HTTP uniquement)** ou **HTTPS Only (HTTPS uniquement)**, votre distribution transmet les requêtes à votre origine selon le protocole spécifié, quel que soit le protocole de la requête de l'utilisateur.

**Important**  
Si votre distribution transmet une requête à l'origine via le protocole HTTPS et si le serveur d'origine renvoie un certificat non valide ou un certificat auto-signé, votre distribution annule la connexion TCP.

### Chaînes de requête
<a name="RequestCustomQueryStrings"></a>

Vous pouvez configurer si que votre distribution transmette les paramètres de chaîne de requête à votre origine. 

### Délai d’attente et tentatives de connexion à l’origine
<a name="custom-origin-timeout-attempts"></a>

Par défaut, votre distribution attend jusqu'à 30 secondes (3 tentatives de 10 secondes) avant de renvoyer une réponse d'erreur à l'utilisateur.



### Délai de réponse de l’origine
<a name="request-custom-request-timeout"></a>

Le *délai de réponse de l’origine*, également appelé *délai d’attente des opérations de lecture depuis l’origine* ou *délai de demande à l’origine*, s’applique aux deux valeurs suivantes :
+ Durée, en secondes, pendant laquelle votre distribution attend une réponse après avoir transféré une requête à l'origine.
+ Durée, en secondes, pendant laquelle votre distribution attend après avoir reçu un paquet d'une réponse provenant de l'origine et avant de recevoir le paquet suivant.

Le comportement de votre distribution dépend de la méthode HTTP utilisée dans la requête utilisateur :
+ Requêtes `GET` et `HEAD` : si l'origine ne répond pas ou cesse de répondre pendant la durée du délai de réponse, votre distribution annule la connexion. Si le nombre spécifié de tentatives de connexion d'origine est supérieur à 1, votre distribution essaie de nouveau d'obtenir une réponse complète. Votre distribution essaie jusqu'à 3 fois, comme déterminé par la valeur du paramètre de *tentative de connexion d'origine*. Si l'origine ne répond pas lors de la dernière tentative, votre distribution ne réessaie pas tant qu'il ne reçoit pas une autre requête de contenu sur la même origine. 
+ Requêtes `DELETE`, `OPTIONS`, `PATCH`, `PUT` et `POST` : si l'origine ne répond pas dans les 30 secondes, votre distribution annule la connexion et ne réessaye pas de contacter l'origine. Le client peut soumettre à nouveau la demande si nécessaire.

### Requêtes simultanées pour le même objet (pics de trafic)
<a name="request-custom-traffic-spikes"></a>

Lorsque l'emplacement périphérique d'une distribution reçoit une requête d'objet et que l'objet ne se trouve actuellement pas dans le cache ou que l'objet a expiré, votre distribution envoie immédiatement la requête à votre origine. En cas de pic de trafic (si des demandes supplémentaires pour le même objet arrivent sur l'emplacement périphérique avant que votre origine réponde à la première requête), votre distribution s'interrompt brièvement avant de transmettre des requêtes supplémentaires pour l'objet à votre origine. Généralement, la réponse à la première requête arrive sur l'emplacement périphérique de la distribution avant la réponse à des requêtes ultérieures. Cette courte pause contribue à réduire toute charge inutile sur votre serveur d’origine. Si les requêtes supplémentaires ne sont pas identiques parce que, par exemple, vous avez configuré votre distribution pour effectuer la mise en cache en fonction d'en-têtes de requête ou de cookies, votre distribution transmet toutes les requêtes uniques à votre origine.

### En-tête d'agent utilisateur
<a name="request-custom-user-agent-header"></a>

Si vous souhaitez que votre distribution mette en cache différentes versions de vos objets en fonction de l'appareil grâce auquel un utilisateur visualise votre contenu, nous vous recommandons de configurer votre distribution pour transmettre un ou plusieurs des en-têtes suivants à votre origine :
+ `CloudFront-Is-Desktop-Viewer`
+ `CloudFront-Is-Mobile-Viewer`
+ `CloudFront-Is-SmartTV-Viewer`
+ `CloudFront-Is-Tablet-Viewer`

En fonction de la valeur de l'en-tête `User-Agent`, votre distribution définit la valeur de ces en-têtes sur `true` ou `false` avant de réacheminer la requête vers votre origine. Si un appareil entre dans plusieurs catégories, plusieurs valeurs peuvent être `true`. Par exemple, pour certaines tablettes, votre distribution peut définir à la fois `CloudFront-Is-Mobile-Viewer` et `CloudFront-Is-Tablet-Viewer` sur `true`.

Vous pouvez configurer votre distribution de sorte qu'elle mette en cache des objets selon les valeurs de l'en-tête `User-Agent`, mais cela n'est pas recommandé. L'en-tête `User-Agent` possède de nombreuses valeurs possibles, et la mise en cache selon ces valeurs entraînerait la mise en cache par votre distribution de beaucoup plus de requêtes à votre origine. 

Si vous ne configurez pas votre distribution pour qu'elle mette en cache des objets en fonction des valeurs de l'en-tête `User-Agent`, votre distribution ajoute un en-tête `User-Agent` avec les valeurs suivantes avant de transmettre une requête à votre origine :

`User-Agent = Amazon CloudFront`

Votre distribution ajoute cet en-tête, que la requête de l'utilisateur inclut un en-tête `User-Agent` ou non. Si la requête de l'utilisateur inclut un en-tête `User-Agent`, votre distribution le supprime.

## Comment votre distribution traite les réponses provenant de votre origine
<a name="distribution-process-responses"></a>

Cette section contient des informations sur la façon dont votre distribution traite les réponses provenant de votre origine.

**Table des matières**
+ [Réponses 100-Continue](#Response100Continue)
+ [Mise en cache](#ResponseCustomCaching)
+ [Requêtes annulées](#response-custom-canceled-requests)
+ [Négociation de contenu](#ResponseCustomContentNegotiation)
+ [Cookies](#ResponseCustomCookies)
+ [Connexions TCP annulées](#ResponseCustomDroppedTCPConnections)
+ [En-têtes de réponse HTTP que votre distribution supprime ou remplace](#ResponseCustomRemovedHeaders)
+ [Taille maximale du fichier](#ResponseCustomMaxFileSize)
+ [Origine non disponible](#ResponseCustomOriginUnavailable)
+ [Redirections](#ResponseCustomRedirects)
+ [Encodage de transfert](#ResponseCustomTransferEncoding)

### Réponses 100-Continue
<a name="Response100Continue"></a>

Votre origine ne peut pas envoyer plus d'une réponse 100-Continue à votre distribution. Après la première réponse 100-Continue, votre distribution attend une réponse HTTP 200 OK. Si votre origine envoie une autre réponse 100-Continue après la première, votre distribution renvoie une erreur.

### Mise en cache
<a name="ResponseCustomCaching"></a>
+ Assurez-vous que l'origine définit des valeurs valides et précises pour les champs d'en-tête `Date` et `Last-Modified`.
+ Si des demandes d'utilisateurs incluent les champs d'en-tête de demande `If-Match` ou `If-None-Match`, définissez le champ d'en-tête de réponse `ETag`. Si vous ne spécifiez pas une valeur `ETag`, votre distribution ignore les en-têtes `If-Match` ou `If-None-Match` suivants.
+ Votre distribution respecte normalement un en-tête `Cache-Control: no-cache` dans la réponse de l'origine. Pour une exception, veuillez consulter [Requêtes simultanées pour le même objet (pics de trafic)](#request-custom-traffic-spikes).

### Requêtes annulées
<a name="response-custom-canceled-requests"></a>

Si un objet n'est pas dans le cache périphérique et si un utilisateur met fin à une session (fermeture d'un navigateur par exemple) après que votre distribution a extrait l'objet de l'origine mais avant qu'il puisse fournir l'objet demandé, votre distribution ne met pas en cache l'objet dans l'emplacement périphérique.

### Négociation de contenu
<a name="ResponseCustomContentNegotiation"></a>

Si votre origine renvoie `Vary:*` dans la réponse et si la valeur de **Minimum TTL (Durée de vie minimale)** pour le comportement de cache correspondant est **0**, votre distribution met en cache l'objet mais transmet quand même à l'origine chaque requête d'objet suivante, afin de vérifier que le cache contient la dernière version de l'objet. Votre distribution n'inclut pas tous les en-têtes conditionnels, comme `If-None-Match` ou `If-Modified-Since`. Par conséquent, votre origine renvoie l'objet à votre distribution en réponse à chaque requête. 

Si votre origine renvoie `Vary:*` la réponse, et si la valeur de **Minimum TTL** pour le comportement de cache correspondant est une autre valeur, CloudFront traite l'`Vary`en-tête comme décrit dans [les en-têtes de réponse HTTP que votre distribution supprime ou remplace](#ResponseCustomRemovedHeaders). 

### Cookies
<a name="ResponseCustomCookies"></a>

Si vous activez les cookies pour un comportement de cache et si l'origine renvoie des cookies avec un objet, votre distribution met en cache l'objet et les cookies. Notez que cela réduit la capacité de mise en cache d'un objet.

### Connexions TCP annulées
<a name="ResponseCustomDroppedTCPConnections"></a>

Si la connexion TCP entre votre distribution et votre origine est annulée alors que votre origine renvoie un objet à votre distribution, le comportement de votre distribution évoluera selon si votre origine incluait ou non un en-tête `Content-Length` dans la réponse :
+ **En-tête Content-Length** : votre distribution renvoie l'objet à l'utilisateur lorsqu'il obtient l'objet de votre origine. Cependant, si la valeur de l'en-tête `Content-Length` ne correspond pas à la taille de l'objet, votre distribution ne met pas l'objet en cache.
+ **Transfer-Encoding: Chunked** : votre distribution renvoie l'objet à l'utilisateur lorsqu'elle obtient l'objet de votre origine. Cependant, si la réponse fragmentée n'est pas complète, votre distribution ne met pas l'objet en cache.
+ **En-tête No Content-Length** : votre distribution renvoie l'objet à l'utilisateur et le met en cache, mais l'objet peut ne pas être complet. Sans en-tête `Content-Length`, votre distribution ne peut pas déterminer si la connexion TCP a été est annulée délibérément ou par erreur.

Nous vous recommandons de configurer votre serveur HTTP pour ajouter un en-tête `Content-Length` afin d'empêcher votre distribution de mettre en cache des objets partiels.

### En-têtes de réponse HTTP que votre distribution supprime ou remplace
<a name="ResponseCustomRemovedHeaders"></a>

Votre distribution supprime ou met à jour les champs d'en-tête suivants avant de transmettre la réponse de votre origine à l'utilisateur :
+ `Set-Cookie` : si vous configurez votre distribution pour transmettre les cookies, celui-ci transmet le champ d'en-tête `Set-Cookie` aux clients.
+ `Trailer`
+ `Transfer-Encoding` : si votre origine renvoie ce champ d'en-tête, votre distribution définit la valeur sur `chunked` avant de renvoyer la réponse à l'utilisateur.
+ `Upgrade`
+ `Vary` – Notez ce qui suit :
  + Si vous configurez votre distribution pour transmettre des en-têtes spécifiques aux appareils à votre origine (`CloudFront-Is-Desktop-Viewer`, `CloudFront-Is-Mobile-Viewer`, `CloudFront-Is-SmartTV-Viewer`, `CloudFront-Is-Tablet-Viewer`) et que vous configurez votre origine pour renvoyer `Vary:User-Agent` à votre distribution, celle-ci renvoie `Vary:User-Agent` à l'utilisateur.
  + Si vous configurez votre origine pour inclure `Accept-Encoding` ou `Cookie` dans l'en-tête `Vary`, votre distribution inclut les valeurs dans la réponse à l'utilisateur.
  + Si vous configurez votre distribution pour transférer une liste d'en-têtes autorisés vers votre origine, et si vous configurez votre origine pour renvoyer les noms des en-têtes de votre distribution dans l'`Vary`en-tête (par exemple,`Vary:Accept-Charset,Accept-Language`), votre distribution renvoie l'`Vary`en-tête contenant ces valeurs au visualiseur.
  + Pour en savoir plus sur la façon dont votre distribution traite une valeur `*` dans l'en-tête `Vary`, consultez [Négociation de contenu](#ResponseCustomContentNegotiation).
  + Si vous configurez votre origine pour inclure d'autres valeurs dans l'en-tête `Vary`, votre distribution supprime les valeurs avant de renvoyer la réponse à l'utilisateur.
+ `Via` : votre distribution définit la valeur suivante dans la réponse à l'utilisateur :

  `Via: `*http-version* *alphanumeric-string*`.cloudfront.net (CloudFront)`

  Par exemple, si le client envoie une demande via HTTP/1.1, la valeur ressemble à ce qui suit :

  `Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)`

### Taille maximale du fichier
<a name="ResponseCustomMaxFileSize"></a>

La taille maximale d'un corps de réponse renvoyé par votre distribution à l'utilisateur est de 20 Go. Cette taille inclut les réponses de transfert fragmentées qui ne spécifient pas la valeur d'en-tête `Content-Length`.

### Origine non disponible
<a name="ResponseCustomOriginUnavailable"></a>

Si votre serveur d'origine n'est pas disponible et que votre distribution obtient une requête d'objet figurant dans le cache périphérique mais ayant expiré (par exemple, parce que la période spécifiée dans la directive `Cache-Control max-age` est écoulée), votre distribution sert la version expirée de l'objet ou sert une page d'erreur personnalisée.

Dans certains cas, un objet qui est rarement demandé est expulsé et n’est plus disponible dans le cache périphérique. Votre distribution ne peut pas diffuser un objet qui a été expulsé.

### Redirections
<a name="ResponseCustomRedirects"></a>

Si vous changez l'emplacement d'un objet sur votre serveur d'origine, vous pouvez configurer votre serveur web afin de rediriger les requêtes vers le nouvel emplacement. Une fois que vous avez configuré la redirection, la première fois qu'un utilisateur soumet une requête pour un objet, votre distribution envoie la requête à l'origine et l'origine répond avec une redirection (par exemple, `302 Moved Temporarily`). Votre distribution met en cache la redirection et la renvoie à l'utilisateur. Votre distribution ne suit pas la redirection.

Vous pouvez configurer votre serveur Web afin de rediriger les demandes vers l’un des emplacements suivants :
+ La nouvelle URL de l’objet sur le serveur d’origine. Lorsque l'utilisateur suit la redirection vers la nouvelle URL, il contourne votre distribution et accède directement à l'origine. Par conséquent, nous vous recommandons de ne pas rediriger des demandes vers la nouvelle URL de l’objet sur l’origine.
+ La nouvelle URL de distribution pour l'objet. Lorsque l'utilisateur soumet la requête qui contient la nouvelle URL de distribution, votre distribution extrait l'objet du nouvel emplacement sur votre origine, le met en cache sur l'emplacement périphérique et renvoie l'objet à l'utilisateur. Les demandes suivantes pour l’objet seront servies par l’emplacement périphérique. Ceci évite la latence et la charge associées aux utilisateurs qui demandent l’objet à l’origine. Cependant, chaque nouvelle requête pour l'objet occasionne des frais pour deux requêtes à votre distribution.

### Encodage de transfert
<a name="ResponseCustomTransferEncoding"></a>

Les distributions Lightsail ne prennent en charge que `chunked` la valeur de l'en-tête. `Transfer-Encoding` Si votre origine renvoie `Transfer-Encoding: chunked`, votre distribution renvoie l'objet au client lorsque l'objet est reçu sur l'emplacement périphérique et met l'objet en cache au format fragmenté pour les requêtes suivantes.

Si l'utilisateur fait une requête `Range GET` et que l'origine renvoie `Transfer-Encoding: chunked`, votre distribution renvoie l'objet entier à l'utilisateur au lieu de la plage demandée.

Nous vous recommandons d’utiliser un encodage fragmenté si la longueur du contenu de votre réponse ne peut pas être prédéterminé. Pour de plus amples informations, veuillez consulter [Connexions TCP annulées](#ResponseCustomDroppedTCPConnections).