

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Gestione los comportamientos de solicitud y respuesta de las distribuciones de Lightsail
<a name="amazon-lightsail-distribution-request-and-response"></a>

En esta guía, describimos el comportamiento de tu distribución de Amazon Lightsail al procesar y reenviar las solicitudes a tu origen y al procesar las respuestas desde tu origen. Para obtener más información sobre las distribuciones, consulte [Distribuciones de red de entrega de contenido](amazon-lightsail-content-delivery-network-distributions.md).

**Temas**
+ [Cómo procesa y reenvía su distribución las solicitudes al origen](#distribution-process-and-forward-requests)
+ [Cómo procesa su distribución las respuestas desde su origen](#distribution-process-responses)

## Cómo procesa y reenvía su distribución las solicitudes al origen
<a name="distribution-process-and-forward-requests"></a>

Este tema contiene información acerca de cómo la distribución procesa solicitudes de lectores y las reenvía a su origen.

**Contenido**
+ [Autenticación](#RequestCustomClientAuth)
+ [Duración del almacenamiento en caché](#RequestCustomCaching)
+ [Direcciones IP de clientes](#RequestCustomIPAddresses)
+ [Autenticación SSL en el cliente](#RequestCustomClientSideSslAuth)
+ [Compresión](#RequestCustomCompression)
+ [Solicitudes condicionales](#RequestCustomConditionalGETs)
+ [Cookies](#RequestCustomCookies)
+ [Uso compartido de recursos entre orígenes (CORS)](#request-custom-cors)
+ [Cifrado](#RequestCustomEncryption)
+ [Solicitudes GET que incluyen un cuerpo](#RequestCustom-get-body)
+ [Métodos HTTP](#RequestCustomHTTPMethods)
+ [Encabezados de solicitudes HTTP y comportamiento de la distribución](#request-custom-headers-behavior)
+ [Versión de HTTP](#RequestCustomHTTPVersion)
+ [Longitud máxima de una solicitud y de una URL](#RequestCustomMaxRequestStringLength)
+ [Asociación de OCSP](#request-custom-ocsp-stapling)
+ [Conexiones persistentes](#request-custom-persistent-connections)
+ [Protocolos](#RequestCustomProtocols)
+ [Cadenas de consulta](#RequestCustomQueryStrings)
+ [Tiempo de espera e intentos de conexión de origen](#custom-origin-timeout-attempts)
+ [Tiempo de espera de respuesta de origen](#request-custom-request-timeout)
+ [Solicitudes simultáneas del mismo objeto (picos de tráfico)](#request-custom-traffic-spikes)
+ [Encabezado usuario-agente](#request-custom-user-agent-header)

### Autenticación
<a name="RequestCustomClientAuth"></a>

Para las solicitudes `DELETE`, `GET`, `HEAD`, `PATCH`, `POST` y `PUT`, si configura la distribución; para reenviar el encabezado `Authorization` a su origen, puede configurar el servidor de origen para que solicite la autenticación del cliente.

Para las solicitudes `OPTIONS`, puede configurar el servidor de origen para que solicite la autenticación del cliente solo si utiliza la siguiente configuración de distribución:
+ Configure la distribución para que reenvíe el encabezado `Authorization` al origen.
+ Configure la distribución para que no almacene en caché la respuesta a solicitudes `OPTIONS`.

Puede configurar la distribución para reenviar las solicitudes al origen mediante HTTP o HTTPS.

### Duración del almacenamiento en caché
<a name="RequestCustomCaching"></a>

Para controlar durante cuánto tiempo deben permanecer los objetos en la caché de la distribución antes de que esta reenvíe otra solicitud al origen, puede:
+ Configure su origen para añadir un `Cache-Control` o un encabezado `Expires` para cada objeto.
+ Utilizar el valor predeterminado de 1 día para la vida útil de caché (TTL).

Para obtener más información, consulte la [configuración avanzada de la distribución](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-changing-default-cache-behavior#changing-caching-behavior-distribution-advanced-settings).

### Direcciones IP de clientes
<a name="RequestCustomIPAddresses"></a>

Si un lector envía una solicitud a la distribución y no incluye un encabezado de solicitud `X-Forwarded-For`, la distribución obtiene la dirección IP del lector de la conexión TCP, agrega un encabezado `X-Forwarded-For` que incluye la dirección IP y reenvía la solicitud al origen. Por ejemplo, si la distribución obtiene la dirección IP `192.0.2.2` de la conexión TCP, reenvía el siguiente encabezado al origen:

`X-Forwarded-For: 192.0.2.2`

Si un lector envía una solicitud a la distribución e incluye un encabezado de solicitud `X-Forwarded-For`, la distribución obtiene la dirección IP del lector de la conexión TCP, la agrega al final del encabezado `X-Forwarded-For` y reenvía la solicitud al origen. Por ejemplo, si la solicitud del lector incluye `X-Forwarded-For: 192.0.2.4,192.0.2.3` y la distribución obtiene la dirección IP `192.0.2.2` de la conexión TCP, reenvía el siguiente encabezado al origen:

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

Algunas aplicaciones, como, por ejemplo, balanceadores de carga, firewalls de aplicación web, proxis inversos, sistemas de prevención de intrusos y API Gateway, agregan la dirección IP del servidor de borde de distribución que reenvía la solicitud al extremo del encabezado `X-Forwarded-For`. Por ejemplo, si la distribución incluye `X-Forwarded-For: 192.0.2.2` en una solicitud que reenvía a ELB y si la dirección IP del servidor de borde de la distribución es 192.0.2.199, la solicitud que recibe la instancia contiene el siguiente encabezado:

`X-Forwarded-For: 192.0.2.2,192.0.2.199`

**nota**  
El `X-Forwarded-For` encabezado contiene IPv4 direcciones (como 192.0.2.44) y IPv6 direcciones (como 2001:0 db 8:85 a 3:0000:0000:8 a2e: 0370:7334).

### Autenticación SSL en el cliente
<a name="RequestCustomClientSideSslAuth"></a>

Las distribuciones de Lightsail no admiten la autenticación de clientes con certificados SSL del lado del cliente. Si un origen solicita un certificado del cliente, la distribución elimina la solicitud. 

### Compresión
<a name="RequestCustomCompression"></a>

Las distribuciones de Lightsail reenvían las solicitudes que tienen `Accept-Encoding` los valores de campo y. `"identity"` `"gzip"`

### Solicitudes condicionales
<a name="RequestCustomConditionalGETs"></a>

Cuando la distribución recibe una solicitud de un objeto que ha caducado en una caché de borde, reenvía la solicitud al origen para obtener la versión más reciente del objeto o para obtener la confirmación del origen de que la caché de borde de la distribución ya dispone de la versión más reciente. Por lo general, la última vez que el origen envió el objeto a la distribución, incluía un valor `ETag`, un valor `LastModified` o ambos en la respuesta. En la nueva solicitud que la distribución reenvía al origen, la distribución agrega uno o ambos de los siguientes elementos:
+ Un encabezado `If-Match` o `If-None-Match` que contenga el valor `ETag` para la versión caducada del objeto.
+ Un encabezado `If-Modified-Since` que contenga el valor `LastModified` para la versión caducada del objeto.

El origen utiliza esta información para determinar si el objeto se ha actualizado y, en consecuencia, devolver todo el objeto a la distribución o devolver solo un código de estado HTTP 304 (no modificado).

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

Puede configurar la distribución para que reenvíe cookies al origen. Para obtener más información, consulte la [configuración avanzada de la distribución](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-changing-default-cache-behavior#changing-caching-behavior-distribution-advanced-settings).

### Uso compartido de recursos entre orígenes (CORS)
<a name="request-custom-cors"></a>

Si desea que la distribución respete la configuración de uso compartido de recursos entre orígenes, configure el origen para que reenvíe el encabezado `Origin` al origen.

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

Puede requerir que los lectores se conecten a la distribución mediante HTTPS y que la distribución reenvíe solicitudes al origen mediante HTTP o HTTPS. 

Su distribución reenvía las solicitudes HTTPS a su origen mediante los protocolos SSLv3, TLSv1 .0, TLSv1 .1 y .2. TLSv1 Otras versiones de SSL y TLS no son compatibles.

### Solicitudes GET que incluyen un cuerpo
<a name="RequestCustom-get-body"></a>

Si una solicitud `GET` del lector incluye un cuerpo, la distribución devuelve un código de estado HTTP 403 (Prohibido) al lector.

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

Si configura la distribución para permitir todos los métodos HTTP que admite, la distribución acepta las siguientes solicitudes de los lectores y las reenvía al origen:
+ `DELETE`
+ `GET`
+ `HEAD`
+ `OPTIONS`
+ `PATCH`
+ `POST`
+ `PUT`

La distribución siempre almacena en caché las respuestas a las solicitudes `GET` y `HEAD`. También puede configurar la distribución para almacenar en caché las respuestas a solicitudes `OPTIONS`. La distribución no almacena en caché las respuestas a las solicitudes que utilizan los demás métodos.

Para obtener más información acerca de la configuración de si el origen procesa estos métodos, consulte la documentación del origen.

**importante**  
Si configura la distribución para aceptar y reenviar al origen todos los métodos HTTP que admite, configure el servidor de origen para administrar todos los métodos. Por ejemplo, si configura la distribución para aceptar y reenviar estos métodos porque desea utilizar `POST`, debe configurar también el servidor de origen para administrar las solicitudes `DELETE` adecuadamente, de forma que los lectores no puedan eliminar los recursos que no desee que eliminen. Para obtener más información, consulte la documentación de su servidor HTTP. 

### Encabezados de solicitudes HTTP y comportamiento de la distribución
<a name="request-custom-headers-behavior"></a>

La siguiente lista contiene los encabezados de solicitudes HTTP que puede reenviar al origen (con las excepciones que se indican). Para cada encabezado, la lista incluye información acerca de lo siguiente:
+ **Compatible**: si puede configurar la distribución para almacenar en caché los objetos en función de los valores de ese encabezado. 

  Puede configurar la distribución para almacenar en caché los objetos en función de los valores de los encabezados `Date` y `User-Agent`, pero no lo recomendamos. Estos encabezados tienen muchos valores posibles y el almacenamiento en caché en función de sus valores podría hacer que la distribución reenvíe una cantidad de solicitudes significativamente mayor al origen.
+ **Comportamiento si no está configurado**: el comportamiento de la distribución si no lo configura es reenviar el encabezado al origen, lo que hace que la distribución almacene en caché los objetos en función de los valores de encabezado.
+ **Encabezado**: encabezados definidos por otros.

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía los encabezados al origen.
+ **Encabezado**: `Accept`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Accept-Charset`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Accept-Encoding`

  **Compatible**: sí

  **Comportamiento si no está configurado**: si el valor contiene `gzip`, la distribución reenvía `Accept-Encoding: gzip` al origen. Si el valor no contiene `gzip`, la distribución elimina el campo del encabezado `Accept-Encoding` antes de reenviar la solicitud al origen.
+ **Encabezado**: `Accept-Language`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Authorization`

  **Compatible**: sí

  **Comportamiento si no está configurado**:
  + Solicitudes `GET` y `HEAD`: la distribución elimina el campo del encabezado `Authorization` antes de reenviar la solicitud al origen.
  + Solicitudes `OPTIONS`: la distribución elimina el campo de encabezado `Authorization` antes de reenviar la solicitud al origen si configura la distribución para almacenar en caché las respuestas a las solicitudes `OPTIONS`.

    La distribución reenvía el campo de encabezado `Authorization` al origen si no configura la distribución para almacenar en caché las respuestas a solicitudes OPTIONS.
  + Solicitudes `DELETE`, `PATCH`, `POST` y `PUT`: la distribución no elimina el campo del encabezado antes de reenviar la solicitud al origen.
+ **Encabezado**: `Cache-Control`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `CloudFront-Forwarded-Proto`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución no agrega el encabezado antes de reenviar la solicitud al origen.
+ **Encabezado**: `CloudFront-Is-Desktop-Viewer`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución no agrega el encabezado antes de reenviar la solicitud al origen.
+ **Encabezado**: `CloudFront-Is-Mobile-Viewer`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución no agrega el encabezado antes de reenviar la solicitud al origen.
+ **Encabezado**: `CloudFront-Is-Tablet-Viewer`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución no agrega el encabezado antes de reenviar la solicitud al origen.
+ **Encabezado**: `CloudFront-Viewer-Country`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución no agrega el encabezado antes de reenviar la solicitud al origen.
+ **Encabezado**: `Connection`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución reemplaza este encabezado por `Connection: Keep-Alive` antes de reenviar la solicitud al origen.
+ **Encabezado**: `Content-Length`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Content-MD5`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Content-Type`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Cookie`

  **Compatible**: no

  **Comportamiento si no está configurado**: si configura la distribución para reenviar cookies, reenviará el campo de encabezado `Cookie` al origen. En caso contrario, la distribución elimina el campo de encabezado `Cookie`.
+ **Encabezado**: `Date`

  **Compatible**: sí, pero no se recomienda.

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Expect`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `From`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Host`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución establece el valor en el nombre de dominio del origen asociado al objeto solicitado. 
+ **Encabezado**: `If-Match`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `If-Modified-Since`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `If-None-Match`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `If-Range`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `If-Unmodified-Since`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Max-Forwards`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Origin`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Pragma`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Proxy-Authenticate`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Proxy-Authorization`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Proxy-Connection`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Range`

  **Compatible**: sí de forma predeterminada

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Referer`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Request-Range`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución reenvía los encabezados al origen.
+ **Encabezado**: `TE`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Trailer`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `Transfer-Encoding`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Upgrade`

  **Compatible**: no (excepto para WebSocket las conexiones)

  **Comportamiento si no está configurado**: tu distribución elimina el encabezado, a menos que hayas establecido una WebSocket conexión.
+ **Encabezado**: `User-Agent`

  **Compatible**: sí, pero no se recomienda.

  **Comportamiento si no está configurado**: la distribución reemplaza el valor de este campo de encabezado por `Amazon CloudFront`.
+ **Encabezado**: `Via`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `Warning`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `X-Amz-Cf-Id`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución agrega el encabezado a la solicitud del lector antes de reenviar la solicitud al origen. El valor de encabezado contiene una cadena cifrada que identifica la solicitud de forma única.
+ **Encabezado**: `X-Edge-*`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución elimina todos los encabezados `X-Edge-*`.
+ **Encabezado**: `X-Forwarded-For`

  **Compatible**: sí

  **Comportamiento si no está configurado**: la distribución reenvía el encabezado al origen.
+ **Encabezado**: `X-Forwarded-Proto`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.
+ **Encabezado**: `X-Real-IP`

  **Compatible**: no

  **Comportamiento si no está configurado**: la distribución elimina el encabezado.

### Versión de HTTP
<a name="RequestCustomHTTPVersion"></a>

La distribución reenvía las solicitudes al origen personalizado mediante HTTP/1.1.

### Longitud máxima de una solicitud y de una URL
<a name="RequestCustomMaxRequestStringLength"></a>

La longitud máxima de una solicitud, incluida la ruta, la cadena de consulta (si procede) y los encabezados, es 20 480 bytes.

La distribución crea una URL a partir de la solicitud. La longitud máxima de esta URL es de 8 192 bytes.

Si una solicitud o una URL supera estos máximos, la distribución devuelve el código de estado HTTP 413, entidad de solicitud demasiado grande, al lector y, a continuación, termina la conexión TCP con el lector.

### Asociación de OCSP
<a name="request-custom-ocsp-stapling"></a>

Cuando un lector envía una solicitud HTTPS para un objeto, la distribución o el lector deben confirmar con la entidad de certificación (CA) que el certificado SSL del dominio no se ha revocado. La asociación de OCSP agiliza la validación del certificado al permitir a la distribución validar el certificado y almacenar en caché la respuesta de la CA, por lo que el cliente no tiene por qué validar el certificado directamente con la CA.

La mejora en el rendimiento de la asociación de OCSP es más notoria cuando la distribución recibe numerosas solicitudes HTTPS de objetos en el mismo dominio. Cada servidor en una ubicación de borde de la distribución debe enviar una solicitud de validación independiente. Cuando la distribución recibe una gran cantidad de solicitudes HTTPS para el mismo dominio, cada servidor de la ubicación de borde obtiene pronto una respuesta de la CA que se puede “asociar” a un paquete en el protocolo de enlace de SSL; cuando el lector considera que el certificado es válido, la distribución puede servir el objeto solicitado. Si la distribución no recibe mucho tráfico en una ubicación de borde, es más probable que las nuevas solicitudes se dirijan a un servidor que todavía no haya validado el certificado con la CA. En ese caso, el lector realiza el paso de validación por separado y el servidor de distribución sirve el objeto. Este servidor de distribución también envía una solicitud de validación a la CA, por lo que la próxima vez que recibe una solicitud que incluye el mismo nombre de dominio, cuenta con una respuesta de validación de la CA.

### Conexiones persistentes
<a name="request-custom-persistent-connections"></a>

Cuando la distribución obtiene una respuesta del origen, intenta mantener la conexión durante varios segundos en caso de que otra solicitud llegue durante ese periodo. Garantizar una conexión persistente ahorra el tiempo necesario para restablecer la conexión TCP y realizar otro protocolo de enlace TLS para solicitudes posteriores.

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

Su distribución reenvía las solicitudes HTTP o HTTPS al servidor de origen en función del valor del campo de **política del protocolo Origin** de la consola de Lightsail. **En la consola de Lightsail, las opciones **son solo HTTP** y solo HTTPS.** 

Si especifica **HTTP Only (Solo HTTP)** o **HTTPS Only (Solo HTTPS)**, la distribución reenvía las solicitudes al origen mediante el protocolo especificado, independientemente del protocolo de la solicitud del lector.

**importante**  
Si la distribución reenvía una solicitud al origen mediante el protocolo HTTPS, y si el servidor de origen devuelve un certificado no válido o autofirmado, la distribución interrumpe la conexión TCP.

### Cadenas de consulta
<a name="RequestCustomQueryStrings"></a>

Puede configurar si la distribución reenvía parámetros de cadenas de consulta al origen. 

### Tiempo de espera e intentos de conexión de origen
<a name="custom-origin-timeout-attempts"></a>

De forma predeterminada, la distribución espera hasta 30 segundos (3 intentos de 10 segundos cada uno) antes de devolver una respuesta de error al lector.



### Tiempo de espera de respuesta de origen
<a name="request-custom-request-timeout"></a>

El *tiempo de espera de respuesta del origen*, también conocido como *tiempo de espera de lectura del origen* y *tiempo de espera de solicitud al origen*, se aplica a los dos siguientes:
+ El periodo de tiempo, en segundos, que la distribución espera una respuesta después de enviar una solicitud al origen.
+ El periodo de tiempo, en segundos, que la distribución espera después de recibir un paquete de una respuesta del origen y antes de recibir el paquete siguiente.

El comportamiento de la distribución depende del método HTTP de la solicitud del lector:
+ Solicitudes `GET` y `HEAD`: si el origen no responde o deja de responder durante el tiempo de espera de la respuesta, la distribución interrumpe la conexión. Si el número especificado de intentos de conexión de origen es superior a 1, la distribución intenta obtener de nuevo una respuesta completa. La distribución lo intenta hasta 3 veces, según lo determinado por el valor de la configuración *Origin connection attempts (Intentos de conexión de origen)*. Si el origen no responde durante el intento final, la distribución no vuelve a intentarlo hasta que se reciba una nueva solicitud de contenido en el mismo origen. 
+ Solicitudes `DELETE`, `OPTIONS`, `PATCH`, `PUT` y `POST`: si el origen no responde en 30 segundos, la distribución interrumpe la conexión y no vuelve a intentar contactar con el origen. El cliente puede volver a enviar la solicitud en caso de que sea necesario.

### Solicitudes simultáneas del mismo objeto (picos de tráfico)
<a name="request-custom-traffic-spikes"></a>

Cuando una ubicación de borde de la distribución recibe una solicitud de un objeto y este no se encuentra en ese momento en la caché o el objeto ha caducado, la distribución envía inmediatamente la solicitud al origen. Si hay un pico de tráfico (es decir, si llegan solicitudes adicionales del mismo objeto a la ubicación periférica antes de que el origen responda a la primera solicitud), la distribución se pone en pausa brevemente antes de reenviar las solicitudes adicionales del objeto a su origen. La respuesta a la primera solicitud suele llegar a la ubicación de borde de la distribución antes que la respuesta a las solicitudes posteriores. Esta breve pausa ayuda a reducir la carga innecesaria en su servidor de origen. Si las solicitudes adicionales no son idénticas, porque, por ejemplo, ha configurado la distribución para almacenar en caché en función de encabezados de solicitudes o cookies, la distribución reenvía todas las solicitudes únicas al origen.

### Encabezado usuario-agente
<a name="request-custom-user-agent-header"></a>

Si desea que la distribución almacene en caché diversas versiones de sus objetos según el dispositivo que el usuario utilice para ver su contenido, le recomendamos que configure la distribución para que reenvíe uno o varios de los siguientes encabezados al origen:
+ `CloudFront-Is-Desktop-Viewer`
+ `CloudFront-Is-Mobile-Viewer`
+ `CloudFront-Is-SmartTV-Viewer`
+ `CloudFront-Is-Tablet-Viewer`

En función del valor del encabezado `User-Agent`, la distribución establece el valor de estos encabezados en `true` o `false` antes de reenviar la solicitud al origen. Si un dispositivo entra en más de una categoría, más de un valor podría ser `true`. Por ejemplo, en el caso de algunas tabletas, la distribución podría establecer tanto `CloudFront-Is-Mobile-Viewer` como `CloudFront-Is-Tablet-Viewer` en `true`.

Puede configurar la distribución para almacenar en caché los objetos en función de los valores del encabezado `User-Agent`, pero no lo recomendamos. El encabezado `User-Agent` tiene muchos valores posibles y el almacenamiento en caché en función de esos valores podría hacer que la distribución reenvíe una cantidad de solicitudes significativamente mayor al origen. 

Si no configura la distribución para almacenar en caché los objetos en función de los valores del encabezado `User-Agent`, la distribución agrega un encabezado `User-Agent` con el siguiente valor antes de reenviar una solicitud al origen:

`User-Agent = Amazon CloudFront`

La distribución agrega este encabezado independientemente de si la solicitud del lector incluye o no un encabezado `User-Agent`. Si la solicitud del lector incluye un encabezado `User-Agent`, la distribución lo elimina.

## Cómo procesa su distribución las respuestas desde su origen
<a name="distribution-process-responses"></a>

Este tema contiene información sobre cómo procesa la distribución las respuestas desde el origen.

**Contenido**
+ [Respuestas 100-continue](#Response100Continue)
+ [Almacenamiento en caché](#ResponseCustomCaching)
+ [Solicitudes canceladas](#response-custom-canceled-requests)
+ [Negociación de contenido](#ResponseCustomContentNegotiation)
+ [Cookies](#ResponseCustomCookies)
+ [Conexiones TCP interrumpidas](#ResponseCustomDroppedTCPConnections)
+ [Encabezados de respuesta HTTP que la distribución elimina o reemplaza](#ResponseCustomRemovedHeaders)
+ [Tamaño máximo de archivo](#ResponseCustomMaxFileSize)
+ [Origen no disponible](#ResponseCustomOriginUnavailable)
+ [Redireccionamientos](#ResponseCustomRedirects)
+ [Codificación de transferencia](#ResponseCustomTransferEncoding)

### Respuestas 100-continue
<a name="Response100Continue"></a>

El origen no puede enviar más de una respuesta 100-continue a la distribución. Después de la primera respuesta de 100-continue, la distribución espera una respuesta HTTP 200 OK. Si el origen envía otra respuesta 100-continue después de la primera, la distribución devolverá un error.

### Almacenamiento en caché
<a name="ResponseCustomCaching"></a>
+ Asegúrese de que el origen establece valores válidos y precisos para los campos de encabezado `Date` y `Last-Modified`.
+ Si las solicitudes de los espectadores incluyen los campos de encabezado de solicitud `If-Match` o `If-None-Match`, defina el campo de encabezado de respuesta `ETag`. Si no especifica un valor `ETag`, la distribución pasa por alto los encabezados `If-Match` o `If-None-Match` posteriores.
+ La distribución normalmente respeta un encabezado `Cache-Control: no-cache` en la respuesta del origen. Para ver una excepción, consulte [Solicitudes simultáneas para el mismo objeto (picos de tráfico)](#request-custom-traffic-spikes).

### Solicitudes canceladas
<a name="response-custom-canceled-requests"></a>

Si un objeto no está en la caché de borde y un lector termina una sesión (por ejemplo, cierra un navegador) después de que la distribución obtenga el objeto solicitado del origen, pero antes de que pueda entregarlo, la distribución no almacena el objeto en la caché de la ubicación de borde.

### Negociación de contenido
<a name="ResponseCustomContentNegotiation"></a>

Si el origen devuelve `Vary:*` en la respuesta y si el valor de **Minimum TTL (TTL mínimo)** para el comportamiento de la caché correspondiente es **0**, la distribución almacena en caché el objeto, pero igualmente reenvía cada solicitud posterior del objeto al origen para confirmar que la caché contiene la versión más reciente del objeto. La distribución no incluye encabezados condicionales, como `If-None-Match` o `If-Modified-Since`. Como resultado, el origen devuelve el objeto a la distribución en respuesta a cada solicitud. 

Si su origen devuelve `Vary:*` la respuesta y si el valor del **TTL mínimo** para el comportamiento de la caché correspondiente es cualquier otro valor, CloudFront procesa el `Vary` encabezado tal como se describe en los [encabezados de respuesta HTTP que su distribución](#ResponseCustomRemovedHeaders) elimina o reemplaza. 

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

Si habilita las cookies para un comportamiento de la caché y si el origen devuelve las cookies con un objeto, la distribución almacena en la caché tanto el objeto como las cookies. Tenga en cuenta que este reduce la capacidad de almacenamiento en caché para un objeto.

### Conexiones TCP interrumpidas
<a name="ResponseCustomDroppedTCPConnections"></a>

Si la conexión TCP entre la distribución y el origen se interrumpe al mismo tiempo que el origen devuelve un objeto a la distribución, el comportamiento de la distribución depende de si el origen incluye un encabezado `Content-Length` en la respuesta:
+ **Encabezado Content-Length**: la distribución devuelve el objeto al lector mientras lo obtiene del origen. Sin embargo, si el valor del encabezado `Content-Length` no coincide con el tamaño del objeto, la distribución no lo almacena en caché.
+ **Codificación de transferencia: fragmentada**: la distribución devuelve el objeto al lector mientras lo obtiene del origen. Sin embargo, si la respuesta en fragmentos no está completa, la distribución no almacena el objeto en la caché.
+ **Encabezado No Content-Length**: la distribución devuelve el objeto al lector y lo almacena en la caché, pero el objeto puede no estar completo. Sin un encabezado `Content-Length`, la distribución no puede determinar si la conexión TCP se interrumpió de forma accidental o intencionadamente.

Le recomendamos que configure su servidor HTTP para agregar un encabezado `Content-Length` y así evitar que la distribución almacene en caché objetos parciales.

### Encabezados de respuesta HTTP que la distribución elimina o reemplaza
<a name="ResponseCustomRemovedHeaders"></a>

La distribución elimina o actualiza los siguientes campos de encabezado antes de reenviar la respuesta desde el origen al lector:
+ `Set-Cookie`: si configura la distribución para reenviar cookies, reenviará el campo del encabezado `Set-Cookie` a los clientes.
+ `Trailer`
+ `Transfer-Encoding`: si el origen devuelve este campo de encabezado, la distribución establece el valor en `chunked` antes de devolver la respuesta al lector.
+ `Upgrade`
+ `Vary`: tenga en cuenta lo siguiente:
  + Si configura la distribución para reenviar cualquiera de los encabezados específicos del dispositivo al origen (`CloudFront-Is-Desktop-Viewer`, `CloudFront-Is-Mobile-Viewer`, `CloudFront-Is-SmartTV-Viewer`, `CloudFront-Is-Tablet-Viewer`) y configura el origen para devolver `Vary:User-Agent` a la distribución, esta devuelve `Vary:User-Agent` al lector.
  + Si configura el origen para incluir `Accept-Encoding` o `Cookie` en el encabezado `Vary`, la distribución incluye los valores en la respuesta al lector.
  + Si configura la distribución para que envíe una lista de encabezados permitidos al origen y, además, configura el origen para devolver los nombres de encabezado a la distribución en el encabezado `Vary` (por ejemplo, `Vary:Accept-Charset,Accept-Language`), la distribución devuelve el encabezado `Vary` con ese valor al lector.
  + Para obtener más información acerca de cómo la distribución procesa un valor de `*` en el encabezado `Vary`, consulte [Negociación de contenido](#ResponseCustomContentNegotiation).
  + Si configura el origen para incluir cualquier otro valor en el encabezado `Vary`, la distribución eliminará dichos valores antes de devolver la respuesta al lector.
+ `Via`: la distribución establece el valor en lo siguiente en la respuesta al lector:

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

  Por ejemplo, si el cliente realiza una solicitud a través de HTTP/1.1, el valor es algo parecido a lo siguiente:

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

### Tamaño máximo de archivo
<a name="ResponseCustomMaxFileSize"></a>

El tamaño máximo de un cuerpo de respuesta que la distribución devolverá al lector es de 20 GB. Eso incluye respuestas transferidas en fragmentos que no especifican el valor de encabezado `Content-Length`.

### Origen no disponible
<a name="ResponseCustomOriginUnavailable"></a>

Si el servidor de origen no está disponible y la distribución obtiene una solicitud de un objeto que se encuentra en la caché de borde, pero que ha caducado (por ejemplo, porque el periodo especificado en la directiva `Cache-Control max-age` ha pasado), la distribución sirve esa versión caducada del objeto o una página de error personalizada.

En algunos casos, un objeto poco solicitado es desalojado y deja de estar disponible en la caché perimetral. La distribución no puede servir un objeto que se ha expulsado.

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

Si cambia la ubicación de un objeto en el servidor de origen, puede configurar su servidor web para redirigir las solicitudes a la nueva ubicación. Después de configurar el redireccionamiento, la primera vez que un lector envía una solicitud del objeto, la distribución envía la solicitud al origen y el origen responde con un redireccionamiento (por ejemplo, `302 Moved Temporarily`). La distribución almacena en caché el redireccionamiento y lo devuelve al lector. La distribución no sigue el redireccionamiento.

Puede configurar su servidor web para redirigir las solicitudes a una de las siguientes ubicaciones:
+ La nueva URL del objeto en el servidor de origen. Cuando el lector sigue el redireccionamiento a la nueva URL, el lector elude la distribución y va directamente al origen. Por tal motivo, le recomendamos que no redirija las solicitudes a la nueva URL del objeto en el origen.
+ La nueva URL de distribución del objeto. Cuando el lector envía la solicitud que contiene la nueva URL de la distribución, esta obtiene el objeto de la nueva ubicación del origen, lo almacena en la caché de la ubicación de borde y lo devuelve al lector. Las solicitudes posteriores del objeto serán atendidas por la ubicación periférica. Esto evita la latencia y carga asociadas a la solicitud del objeto al origen por parte de los espectadores. Sin embargo, cada nueva solicitud del objeto implicará cargos por dos solicitudes a la distribución.

### Codificación de transferencia
<a name="ResponseCustomTransferEncoding"></a>

Las distribuciones de Lightsail solo admiten el valor `chunked` del encabezado. `Transfer-Encoding` Si el origen devuelve `Transfer-Encoding: chunked`, la distribución devuelve el objeto al cliente tan pronto como lo recibe en la ubicación de borde, y lo almacena en caché en formato fragmentado para solicitudes posteriores.

Si un lector envía una solicitud `Range GET` y el origen devuelve `Transfer-Encoding: chunked`, la distribución devuelve el objeto completo al lector en lugar del rango solicitado.

Le recomendamos utilizar codificación fragmentada si la longitud de su respuesta no puede ser predeterminada. Para obtener más información, consulte [Conexiones TCP interrumpidas](#ResponseCustomDroppedTCPConnections).