

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gerencie comportamentos de solicitação e resposta para distribuições do Lightsail
<a name="amazon-lightsail-distribution-request-and-response"></a>

Neste guia, descrevemos a forma como sua distribuição do Amazon Lightsail se comporta ao processar e encaminhar solicitações para sua origem e processar respostas de sua origem. Para obter mais informações sobre distribuições, consulte [Distribuições de rede de entrega de conteúdo](amazon-lightsail-content-delivery-network-distributions.md).

**Tópicos**
+ [Como sua distribuição processa e encaminha solicitações para a sua origem](#distribution-process-and-forward-requests)
+ [Como sua distribuição processa as respostas da sua origem](#distribution-process-responses)

## Como sua distribuição processa e encaminha solicitações para a sua origem
<a name="distribution-process-and-forward-requests"></a>

Esta seção contém informações sobre como a sua distribuição processa solicitações do visualizador e as encaminha para a sua origem.

**Índice**
+ [Autenticação](#RequestCustomClientAuth)
+ [Duração do cache](#RequestCustomCaching)
+ [Endereços IP do cliente](#RequestCustomIPAddresses)
+ [Autenticação SSL do lado do cliente](#RequestCustomClientSideSslAuth)
+ [Compactação](#RequestCustomCompression)
+ [Solicitações condicionais](#RequestCustomConditionalGETs)
+ [Cookies](#RequestCustomCookies)
+ [Compartilhamento de recursos de origem cruzada (CORS)](#request-custom-cors)
+ [Criptografia](#RequestCustomEncryption)
+ [Solicitações GET que incluem um corpo](#RequestCustom-get-body)
+ [Métodos HTTP](#RequestCustomHTTPMethods)
+ [Cabeçalhos de solicitação HTTP e comportamento da distribuição](#request-custom-headers-behavior)
+ [Versão do HTTP](#RequestCustomHTTPVersion)
+ [Tamanho máximo de uma solicitação e de um URL](#RequestCustomMaxRequestStringLength)
+ [OCSP Stapling](#request-custom-ocsp-stapling)
+ [Conexões persistentes](#request-custom-persistent-connections)
+ [Protocolos](#RequestCustomProtocols)
+ [Strings de consulta](#RequestCustomQueryStrings)
+ [Tempo limite e tentativas de conexão com a origem](#custom-origin-timeout-attempts)
+ [Tempo limite de resposta da origem](#request-custom-request-timeout)
+ [Solicitações simultâneas do mesmo objeto (picos de tráfego)](#request-custom-traffic-spikes)
+ [Cabeçalho User-agent](#request-custom-user-agent-header)

### Autenticação
<a name="RequestCustomClientAuth"></a>

Para solicitações `DELETE`, `GET`, `HEAD`, `PATCH`, `POST` e `PUT`, se você configurar sua distribuição para encaminhar o cabeçalho `Authorization` para sua origem, poderá configurar seu servidor de origem para solicitar a autenticação do cliente.

Para solicitações do `OPTIONS`, você pode configurar seu servidor de origem para solicitar a autenticação do cliente somente se usar as seguintes configurações da distribuição:
+ Configure sua distribuição para encaminhar o cabeçalho `Authorization` para a sua origem.
+ Configure sua distribuição para não armazenar em cache a resposta a solicitações do `OPTIONS`.

Você pode configurar sua distribuição para encaminhar solicitações para sua origem usando HTTP ou HTTPS.

### Duração do cache
<a name="RequestCustomCaching"></a>

Para controlar quanto tempo seus objetos permanecem em um cache da sua distribuição antes que a distribuição encaminhe outra solicitação para a sua origem, você pode:
+ Configurar sua origem para adicionar um campo de cabeçalho `Cache-Control` ou `Expires` a cada objeto.
+ Usar o valor padrão de 1 dia para o tempo de vida (TTL) do cache.

Para obter mais informações, consulte [configurações avançadas da distribuição](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-changing-default-cache-behavior#changing-caching-behavior-distribution-advanced-settings).

### Endereços IP do cliente
<a name="RequestCustomIPAddresses"></a>

Se um visualizador enviar uma solicitação para a sua distribuição e não incluir um cabeçalho de solicitação `X-Forwarded-For`, sua distribuição obterá o endereço IP do visualizador na conexão TCP, adicionará um cabeçalho `X-Forwarded-For` que inclui o endereço IP e encaminhará a solicitação para a origem. Por exemplo, se a sua distribuição obtiver o endereço IP `192.0.2.2` da conexão TCP, o seguinte cabeçalho será encaminhado para a origem:

`X-Forwarded-For: 192.0.2.2`

Se um visualizador enviar uma solicitação para a sua distribuição e incluir um cabeçalho de solicitação `X-Forwarded-For`, sua distribuição obterá o endereço IP do visualizador na conexão TCP, vai incluí-lo no final do cabeçalho `X-Forwarded-For` e encaminhará a solicitação para a origem. Por exemplo, se a solicitação do visualizador incluir `X-Forwarded-For: 192.0.2.4,192.0.2.3` e a sua distribuição obtiver o endereço IP `192.0.2.2` da conexão TCP, ela encaminhará o seguinte cabeçalho para a origem:

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

Algumas aplicações, como balanceadores de carga, firewalls de aplicações Web, proxies reversos, sistemas de prevenção de invasão e API Gateway, acrescentam o endereço IP do servidor de borda da distribuição que encaminhou a solicitação ao final do cabeçalho `X-Forwarded-For`. Por exemplo, se a sua distribuição incluir `X-Forwarded-For: 192.0.2.2` em uma solicitação encaminhada para o ELB e o endereço IP do servidor de borda da distribuição for 192.0.2.199, a solicitação recebida por sua instância terá o seguinte cabeçalho:

`X-Forwarded-For: 192.0.2.2,192.0.2.199`

**nota**  
O `X-Forwarded-For` cabeçalho contém IPv4 endereços (como 192.0.2.44) e IPv6 endereços (como 2001:0 db 8:85 a 3:0000:0000:8 a2e: 0370:7334).

### Autenticação SSL do lado do cliente
<a name="RequestCustomClientSideSslAuth"></a>

As distribuições Lightsail não oferecem suporte à autenticação de clientes com certificados SSL do lado do cliente. Se uma origem solicitar um certificado do lado do cliente, sua distribuição encerrará a solicitação. 

### Compactação
<a name="RequestCustomCompression"></a>

As distribuições do Lightsail encaminham solicitações que têm `Accept-Encoding` os valores de campo e. `"identity"` `"gzip"`

### Solicitações condicionais
<a name="RequestCustomConditionalGETs"></a>

Quando sua distribuição recebe uma solicitação de um objeto que expirou de um cache de borda, ela encaminha a solicitação para a sua origem para obter a versão mais recente do objeto ou a confirmação pela origem de que o cache de borda da distribuição já tem a versão mais recente. Normalmente, quando a origem enviou o objeto pela última vez para a sua distribuição, ele incluiu um valor `ETag`, um valor `LastModified` ou ambos os valores na resposta. Na nova solicitação que a sua distribuição encaminha à origem, ela adiciona um destes (ou ambos):
+ Um cabeçalho `If-Match` ou `If-None-Match` com o valor `ETag` da versão expirada do objeto.
+ Um cabeçalho `If-Modified-Since` com o valor `LastModified` da versão expirada do objeto.

A origem usa essas informações para determinar se o objeto foi atualizado e, portanto, se deve retornar todo o objeto para a sua distribuição ou apenas um código de estado HTTP 304 (não modificado).

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

Você pode configurar sua distribuição para encaminhar cookies para a sua origem. Para obter mais informações, consulte [configurações avançadas da distribuição](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-changing-default-cache-behavior#changing-caching-behavior-distribution-advanced-settings).

### Compartilhamento de recursos de origem cruzada (CORS)
<a name="request-custom-cors"></a>

Se você quiser que sua distribuição respeite as configurações de compartilhamento de recursos entre origens, configure sua origem para encaminhar o cabeçalho `Origin` para a sua origem.

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

Você pode exigir que os visualizadores se conectem à distribuição usando HTTPS e exigir que sua distribuição encaminhe solicitações à origem usando HTTP ou HTTPS. 

Sua distribuição encaminha solicitações HTTPS para sua origem usando os protocolos SSLv3, TLSv1 .0, TLSv1 .1 e TLSv1 .2. Outras versões de SSL e TLS não são compatíveis.

### Solicitações GET que incluem um corpo
<a name="RequestCustom-get-body"></a>

Se uma solicitação `GET` do visualizador incluir um corpo, sua distribuição retornará o código de estado HTTP 403 (Proibido).

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

Se você configurar sua distribuição para permitir todos os métodos HTTP compatíveis, ela aceitará as seguintes solicitações dos visualizadores e as encaminhará para a sua origem:
+ `DELETE`
+ `GET`
+ `HEAD`
+ `OPTIONS`
+ `PATCH`
+ `POST`
+ `PUT`

Sua distribuição sempre armazena respostas às solicitações `GET` e `HEAD` em cache. Você também pode configurar sua distribuição para armazenar respostas a solicitações `OPTIONS` em cache. Sua distribuição não armazena em cache respostas a solicitações que utilizam os outros métodos.

Para obter informações sobre como configurar se sua origem processa esses métodos ou não, consulte a documentação da sua origem.

**Importante**  
Se você configurar sua distribuição para aceitar e encaminhar todos os métodos HTTP compatíveis com ela para a sua origem, configure seu servidor de origem para lidar com todos eles. Por exemplo, se você configurar sua distribuição para aceitar e encaminhar esses métodos porque deseja usar `POST`, será preciso configurar seu servidor de origem para lidar com solicitações `DELETE` de forma apropriada para que os visualizadores não possam excluir recursos que não devem ser excluídos. Para obter mais informações, consulte a documentação do seu servidor HTTP. 

### Cabeçalhos de solicitação HTTP e comportamento da distribuição
<a name="request-custom-headers-behavior"></a>

A tabela a seguir lista os cabeçalhos de solicitação HTTP que você pode encaminhar para a sua origem (com as exceções observadas). Para cada cabeçalho, a tabela inclui informações sobre o seguinte:
+ **Compatível**: se você pode configurar sua distribuição para armazenar os objetos em cache com base nos valores do cabeçalho em questão. 

  Você pode configurar sua distribuição para armazenar objetos em cache com base nos valores dos cabeçalhos `Date` e `User-Agent`, mas não recomendamos que você faça isso. Esses cabeçalhos podem ter diversos valores, e o armazenamento em cache com base nesses valores faz com que sua distribuição encaminhe muito mais solicitações à sua origem.
+ **Comportamento se não estiver configurado**: o comportamento da distribuição se você não configurá-la para encaminhar o cabeçalho para sua origem, o que faz com que sua distribuição armazene seus objetos em cache com base nos valores do cabeçalho.
+ **Cabeçalho**: outros cabeçalhos definidos

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha os cabeçalhos à sua origem.
+ **Cabeçalho**: `Accept`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Accept-Charset`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Accept-Encoding`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: se o valor contiver `gzip`, sua distribuição encaminha `Accept-Encoding: gzip` para sua origem. Se o valor não contiver `gzip`, sua distribuição removerá o campo de cabeçalho `Accept-Encoding` antes de encaminhar a solicitação para sua origem.
+ **Cabeçalho**: `Accept-Language`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Authorization`

  **Compatível**: sim

  **Comportamento se não estiver configurado**:
  + Solicitações `GET` e `HEAD`: sua distribuição remove o campo de cabeçalho `Authorization` antes de encaminhar a solicitação para a origem.
  + Solicitações `OPTIONS`: sua distribuição remove o campo de cabeçalho `Authorization` antes de encaminhar a solicitação para sua origem se você configurá-la para armazenar em cache respostas a solicitações `OPTIONS`.

    Sua distribuição encaminhará o campo de cabeçalho `Authorization` para sua origem se você não configurar sua distribuição para armazenar respostas a solicitações OPTIONS em cache.
  + Solicitações `DELETE`, `PATCH`, `POST` e `PUT`: sua distribuição não remove o campo de cabeçalho antes de encaminhar a solicitação para a origem.
+ **Cabeçalho**: `Cache-Control`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `CloudFront-Forwarded-Proto`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição não adiciona o cabeçalho antes de encaminhar a solicitação para sua origem.
+ **Cabeçalho**: `CloudFront-Is-Desktop-Viewer`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição não adiciona o cabeçalho antes de encaminhar a solicitação para sua origem.
+ **Cabeçalho**: `CloudFront-Is-Mobile-Viewer`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição não adiciona o cabeçalho antes de encaminhar a solicitação para sua origem.
+ **Cabeçalho**: `CloudFront-Is-Tablet-Viewer`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição não adiciona o cabeçalho antes de encaminhar a solicitação para sua origem.
+ **Cabeçalho**: `CloudFront-Viewer-Country`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição não adiciona o cabeçalho antes de encaminhar a solicitação para sua origem.
+ **Cabeçalho**: `Connection`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição substitui `Connection: Keep-Alive` por este cabeçalho antes de encaminhar a solicitação para sua origem.
+ **Cabeçalho**: `Content-Length`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Content-MD5`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Content-Type`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Cookie`

  **Compatível**: não

  **Comportamento se não estiver configurado**: se você configurar sua distribuição para encaminhar cookies, ela encaminhará o campo de cabeçalho `Cookie` para sua origem. Caso contrário, sua distribuição removerá o campo de cabeçalho `Cookie`.
+ **Cabeçalho**: `Date`

  **Compatível**: sim, mas não recomendado

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Expect`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `From`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Host`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição define o valor do nome de domínio da origem associada ao objeto solicitado. 
+ **Cabeçalho**: `If-Match`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `If-Modified-Since`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `If-None-Match`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `If-Range`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `If-Unmodified-Since`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Max-Forwards`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Origin`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Pragma`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Proxy-Authenticate`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Proxy-Authorization`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Proxy-Connection`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Range`

  **Compatível**: sim, por padrão

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Referer`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Request-Range`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `TE`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Trailer`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `Transfer-Encoding`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Upgrade`

  **Compatível** - Não (exceto para WebSocket conexões)

  **Comportamento se não estiver configurado** - Sua distribuição remove o cabeçalho, a menos que você tenha estabelecido uma WebSocket conexão.
+ **Cabeçalho**: `User-Agent`

  **Compatível**: sim, mas não recomendado

  **Comportamento se não estiver configurado**: sua distribuição substitui `Amazon CloudFront` pelo valor desse campo de cabeçalho.
+ **Cabeçalho**: `Via`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `Warning`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `X-Amz-Cf-Id`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição adiciona o cabeçalho à solicitação do visualizador antes de encaminhá-la para sua origem. O valor do cabeçalho contém uma string criptografada que identifica exclusivamente a solicitação.
+ **Cabeçalho**: `X-Edge-*`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição remove todos os cabeçalhos `X-Edge-*`.
+ **Cabeçalho**: `X-Forwarded-For`

  **Compatível**: sim

  **Comportamento se não estiver configurado**: sua distribuição encaminha o cabeçalho para sua origem.
+ **Cabeçalho**: `X-Forwarded-Proto`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.
+ **Cabeçalho**: `X-Real-IP`

  **Compatível**: não

  **Comportamento se não estiver configurado**: sua distribuição remove o cabeçalho.

### Versão do HTTP
<a name="RequestCustomHTTPVersion"></a>

Sua distribuição encaminha solicitações para a sua origem usando HTTP/1.1.

### Tamanho máximo de uma solicitação e de um URL
<a name="RequestCustomMaxRequestStringLength"></a>

O tamanho máximo de uma solicitação, com o caminho, a query string (se houver) e os cabeçalhos, é de 20.480 bytes.

Sua distribuição cria um URL a partir da solicitação. O tamanho máximo do URL é de 8.192 bytes.

Se uma solicitação ou um URL ultrapassar esses limites máximos, sua distribuição retornará o código de estado HTTP 413, Entidade de solicitação muito grande, para o visualizador e encerrará a conexão TCP com ele.

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

Quando um visualizador envia uma solicitação HTTPS para um objeto, tanto ele quanto sua distribuição devem confirmar com a autoridade de certificação (CA) se o certificado SSL do domínio não foi revogado. O OCSP Stapling acelera a validação do certificado, permitindo que sua distribuição valide o certificado e armazene as respostas da CA em cache, para que o cliente não precise validar o certificado diretamente com a CA.

A melhoria de performance do OCSP Stapling é mais acentuada quando sua distribuição recebe várias solicitações HTTPS para objetos no mesmo domínio. Cada servidor em um local da borda da distribuição deve enviar uma solicitação de validação separada. Quando sua distribuição recebe um grande número de solicitações HTTPS para o mesmo domínio, cada servidor no local da borda tem rapidamente uma resposta da CA de que pode "grampear" em um pacote no handshake SSL; quando o visualizador acreditar que o certificado é válido, sua distribuição poderá fornecer o objeto solicitado. Caso sua distribuição não tenha muito tráfego em um local da borda, é provável que novas solicitações sejam direcionadas para um servidor que ainda não validou o certificado com a CA. Nesse caso, o visualizador executa separadamente a etapa de validação, e o servidor da distribuição fornece o objeto. Esse servidor da distribuição também envia uma solicitação de validação para a CA para que, na próxima vez que receber uma solicitação que inclua o mesmo nome de domínio, tenha uma resposta de validação da CA.

### Conexões persistentes
<a name="request-custom-persistent-connections"></a>

Ao obter uma resposta da sua origem, sua distribuição tenta manter a conexão por alguns segundos caso chegue outra solicitação nesse período. A manutenção de uma conexão persistente economiza o tempo necessário para restabelecer a conexão TCP e executar outro handshake TLS para solicitações subsequentes.

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

Sua distribuição encaminha solicitações HTTP ou HTTPS para o servidor de origem com base no valor do campo **Política do protocolo Origin** no console do Lightsail. **No console do Lightsail, as opções **são somente HTTP e somente HTTPS**.** 

Se você especificar **Somente HTTP** ou **Somente HTTPS**, sua distribuição encaminhará as solicitações para a sua origem usando o protocolo especificado, independentemente do protocolo contido na solicitação do visualizador.

**Importante**  
Se a sua distribuição encaminhar uma solicitação para a origem usando o protocolo HTTPS e o servidor de origem retornar um certificado inválido ou autoassinado, sua distribuição encerrará a conexão TCP.

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

Você pode configurar se a sua distribuição encaminha parâmetros de strings de consulta para sua origem. 

### Tempo limite e tentativas de conexão com a origem
<a name="custom-origin-timeout-attempts"></a>

Por padrão, sua distribuição aguarda até 30 segundos (3 tentativas de 10 segundos cada) antes de retornar uma resposta de erro ao visualizador.



### Tempo limite de resposta da origem
<a name="request-custom-request-timeout"></a>

O *tempo limite de resposta da origem*, também conhecido como *tempo limite de leitura da origem* ou *tempo limite de solicitação da origem*, aplica-se a estes dois valores:
+ A quantidade de tempo, em segundos, que a sua distribuição aguarda uma resposta após o encaminhamento de uma solicitação à origem.
+ A quantidade de tempo, em segundos, que a sua distribuição aguarda após o recebimento de um pacote de resposta da origem e antes do recebimento do próximo pacote.

O comportamento da sua distribuição depende do método HTTP na solicitação do visualizador:
+ Solicitações `GET` e `HEAD`: se a origem não responder ou parar de responder dentro da duração do tempo limite da resposta, a distribuição encerrará a conexão. Se o número especificado de tentativas de conexão com a origem for maior que 1, sua distribuição tentará novamente obter uma resposta completa. Sua distribuição tenta até 3 vezes, conforme determinado pelo valor da configuração de *tentativas de conexão com a origem*. Se a origem não responder durante a última tentativa, sua distribuição não tentará novamente enquanto não receber outra solicitação de conteúdo na mesma origem. 
+ Solicitações `DELETE`, `OPTIONS`, `PATCH`, `PUT` e `POST` :se a origem não responder em 30 segundos, a distribuição encerrará a conexão e não tentará entrar em contato com a origem novamente. O cliente pode reenviar a solicitação, se necessário.

### Solicitações simultâneas do mesmo objeto (picos de tráfego)
<a name="request-custom-traffic-spikes"></a>

Quando um local da borda da distribuição recebe uma solicitação de um objeto e o objeto não está atualmente em cache ou expirou, sua distribuição envia imediatamente a solicitação para a sua origem. Se houver um pico de tráfego (se solicitações adicionais do mesmo objeto chegarem ao local da borda antes de a origem responder à primeira solicitação), sua distribuição fará uma breve pausa antes de encaminhar solicitações adicionais do objeto à origem. Normalmente, a resposta à primeira solicitação chegará ao local da borda da distribuição antes da resposta às próximas solicitações. Essa breve pausa ajuda a reduzir a carga desnecessária no servidor de origem. Se as solicitações adicionais não forem idênticas porque, por exemplo, você configurou sua distribuição para armazenamento em cache com base nos cabeçalhos de solicitação ou cookies, sua distribuição encaminhará todas as solicitações exclusivas para sua origem.

### Cabeçalho User-agent
<a name="request-custom-user-agent-header"></a>

Se você quiser que sua distribuição armazene diferentes versões dos seus objetos em cache com base no dispositivo usado pelo usuário para visualizar seu conteúdo, recomendamos configurar sua distribuição para encaminhar um ou mais dos cabeçalhos à sua origem:
+ `CloudFront-Is-Desktop-Viewer`
+ `CloudFront-Is-Mobile-Viewer`
+ `CloudFront-Is-SmartTV-Viewer`
+ `CloudFront-Is-Tablet-Viewer`

Com base no valor do cabeçalho `User-Agent`, sua distribuição define o valor desses cabeçalhos como `true` ou `false` antes de encaminhar a solicitação para sua origem. Se o dispositivo se encaixar em mais de uma categoria, mais de um valor poderá ser `true`. Por exemplo, para alguns tablets, sua distribuição poderia definir tanto `CloudFront-Is-Mobile-Viewer` quanto `CloudFront-Is-Tablet-Viewer` como `true`.

Você pode configurar sua distribuição para armazenar os objetos em cache com base no cabeçalho `User-Agent`, mas não recomendamos isso. Há vários valores possíveis para o cabeçalho `User-Agent`, e o armazenamento em cache com base nesses valores faz com que a distribuição encaminhe muito mais solicitações para sua origem. 

Se você não configurar sua distribuição para armazenar os objetos em cache com base nos valores do cabeçalho `User-Agent`, ela adicionará um cabeçalho `User-Agent` com o seguinte valor antes de encaminhar uma solicitação para sua origem:

`User-Agent = Amazon CloudFront`

Sua distribuição adiciona esse cabeçalho, independentemente se a solicitação do visualizador inclui um cabeçalho `User-Agent` ou não. Se a solicitação do visualizador incluir um cabeçalho `User-Agent`, sua distribuição vai removê-lo.

## Como sua distribuição processa as respostas da sua origem
<a name="distribution-process-responses"></a>

Esta seção contém informações sobre como sua distribuição processa as respostas da sua origem.

**Índice**
+ [Respostas 100-Continue](#Response100Continue)
+ [Armazenamento em cache](#ResponseCustomCaching)
+ [Solicitações canceladas](#response-custom-canceled-requests)
+ [Negociação de conteúdo](#ResponseCustomContentNegotiation)
+ [Cookies](#ResponseCustomCookies)
+ [Conexões TCP encerradas](#ResponseCustomDroppedTCPConnections)
+ [Cabeçalhos de resposta HTTP removidos ou substituídos por sua distribuição](#ResponseCustomRemovedHeaders)
+ [Tamanho máximo do arquivo](#ResponseCustomMaxFileSize)
+ [Origem indisponível](#ResponseCustomOriginUnavailable)
+ [Redirecionamentos](#ResponseCustomRedirects)
+ [Codificação de transferência](#ResponseCustomTransferEncoding)

### Respostas 100-Continue
<a name="Response100Continue"></a>

Sua origem não pode enviar mais de uma resposta 100-Continue para sua distribuição. Após a primeira resposta 100-Continue, sua distribuição espera uma resposta HTTP 200 OK. Se sua origem enviar outra resposta 100-Continue após a primeira, sua distribuição retornará um erro.

### Armazenamento em cache
<a name="ResponseCustomCaching"></a>
+ Certifique-se de que sua origem defina valores válidos e precisos para os campos de cabeçalho `Date` e `Last-Modified`.
+ Se solicitações dos visualizadores incluírem o campo de cabeçalho de solicitação `If-Match` ou `If-None-Match`, defina o campo de cabeçalho de solicitação `ETag`. Se você não especificar um valor `ETag`, sua distribuição ignorará os cabeçalhos `If-Match` e `If-None-Match` subsequentes.
+ Sua distribuição normalmente respeita um cabeçalho `Cache-Control: no-cache` na resposta da origem. Para ver uma exceção, consulte [Solicitações simultâneas para o mesmo objeto (picos de tráfego)](#request-custom-traffic-spikes).

### Solicitações canceladas
<a name="response-custom-canceled-requests"></a>

Se o objeto não estiver no cache de borda e o visualizador encerrar uma sessão (por exemplo, fechar um navegador) depois de sua distribuição obter o objeto da origem, mas antes de conseguir fornecer o objeto solicitado, sua distribuição não armazenará o objeto em cache no local da borda.

### Negociação de conteúdo
<a name="ResponseCustomContentNegotiation"></a>

Se a origem retornar `Vary:*` na resposta e o valor de **Minimum TTL** do comportamento do cache correspondente for **0**, sua distribuição armazenará o objeto em cache, mas ainda encaminhará todas as solicitações subsequentes do objeto à origem para confirmar se o cache contém a versão mais recente do objeto. Sua distribuição não inclui cabeçalhos condicionais, como `If-None-Match` ou `If-Modified-Since`. Consequentemente, sua origem retorna o objeto para a distribuição em resposta a cada solicitação. 

Se sua origem retornar `Vary:*` na resposta e se o valor de **TTL mínimo** para o comportamento de cache correspondente for qualquer outro valor, CloudFront processará o `Vary` cabeçalho conforme descrito nos [cabeçalhos de resposta HTTP que sua distribuição remove ou](#ResponseCustomRemovedHeaders) substitui. 

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

Se você permitir cookies para um comportamento de cache e a origem retornar cookies com um objeto, sua distribuição armazenará em cache tanto o objeto quanto os cookies. Observe que esse recurso reduz a capacidade de armazenamento em cache de um objeto.

### Conexões TCP encerradas
<a name="ResponseCustomDroppedTCPConnections"></a>

Se a conexão TCP entre a sua distribuição e sua origem for encerrada enquanto a origem estiver retornando um objeto para a sua distribuição, o comportamento da sua distribuição dependerá da inclusão ou não de um cabeçalho `Content-Length` na resposta:
+ **Cabeçalho Content-Length** sua distribuição retorna o objeto para o visualizador assim que o obtém da origem. No entanto, se o valor do cabeçalho `Content-Length` não corresponder ao tamanho do objeto, sua distribuição não armazenará esse objeto em cache.
+ **Transfer-Encoding: Chunked**: a distribuição retorna o objeto para o visualizador assim que o recebe da origem. No entanto, se a resposta em partes não for concluída, sua distribuição não armazenará o objeto em cache.
+ **Cabeçalho No Content-Length**: a distribuição retorna o objeto para o visualizador e o armazena em cache, mas o objeto pode não estar completo. Sem um cabeçalho `Content-Length`, sua distribuição não consegue determinar se a conexão TCP foi encerrada de forma acidental ou proposital.

Recomendamos que você configure seu servidor HTTP para adicionar um cabeçalho `Content-Length` e impedir que sua distribuição armazene objetos parciais em cache.

### Cabeçalhos de resposta HTTP removidos ou substituídos por sua distribuição
<a name="ResponseCustomRemovedHeaders"></a>

Sua distribuição remove ou atualiza os seguintes campos de cabeçalho antes de encaminhar a resposta da sua origem para o visualizador:
+ `Set-Cookie`: se você configurar sua distribuição para encaminhar cookies, ela encaminhará o campo do cabeçalho `Set-Cookie` para os clientes.
+ `Trailer`
+ `Transfer-Encoding`: se a origem retornar esse campo do cabeçalho, sua distribuição definirá o valor como `chunked` antes de retornar a resposta para o visualizador.
+ `Upgrade`
+ `Vary` – Observe o seguinte:
  + Se você configurar sua distribuição para encaminhar os cabeçalhos específicos do dispositivo à origem (`CloudFront-Is-Desktop-Viewer`, `CloudFront-Is-Mobile-Viewer`, `CloudFront-Is-SmartTV-Viewer`, `CloudFront-Is-Tablet-Viewer`) e configurar a origem para retornar `Vary:User-Agent` à sua distribuição, ela retornará `Vary:User-Agent` ao visualizador.
  + Se você configurar a origem para incluir `Accept-Encoding` ou `Cookie` no cabeçalho `Vary`, sua distribuição incluirá os valores na resposta ao visualizador.
  + Se você configurar a distribuição para encaminhar uma lista de permissões de cabeçalhos para a sua origem, e se configurar a origem para retornar os nomes de cabeçalho para a sua distribuição no cabeçalho `Vary` (por exemplo, `Vary:Accept-Charset,Accept-Language`), sua distribuição retornará o cabeçalho `Vary` com esses valores ao visualizador.
  + Para obter informações sobre como sua distribuição processa um valor de `*` no cabeçalho `Vary`, consulte[Negociação de conteúdo](#ResponseCustomContentNegotiation).
  + Se você configurar a origem para incluir qualquer outro valor no cabeçalho `Vary`, sua distribuição removerá os valores antes de retornar a resposta ao visualizador.
+ `Via`: sua distribuição define o valor para o seguinte na resposta ao visualizador:

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

  Por exemplo, se o cliente faz uma solicitação pelo HTTP/1.1, o valor será semelhante a:

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

### Tamanho máximo do arquivo
<a name="ResponseCustomMaxFileSize"></a>

O tamanho máximo do corpo de uma resposta retornada pela sua distribuição ao visualizador é de 20 GB. Isso inclui respostas de transferência em partes que não especificam o valor de cabeçalho `Content-Length`.

### Origem indisponível
<a name="ResponseCustomOriginUnavailable"></a>

Se o servidor de origem estiver indisponível e a sua distribuição receber uma solicitação de um objeto que está no cache da borda, mas expirou (por exemplo, porque o período especificado na diretiva `Cache-Control max-age` se esgotou), sua distribuição enviará a versão expirada do objeto ou uma página de erro personalizada.

Em alguns casos, um objeto que é raramente solicitado é removido e se torna indisponível no local da borda de caches. Sua distribuição não pode fornecer um objeto que foi removido.

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

Se você alterar a localização de um objeto no servidor de origem, poderá configurar o servidor da Web para redirecionar as solicitações para o novo local. Depois de configurar o redirecionamento, na primeira vez que um visualizador enviar uma solicitação do objeto, sua distribuição vai enviá-la para a origem, e a origem responderá com um redirecionamento (por exemplo, `302 Moved Temporarily`). A distribuição armazena o redirecionamento em cache e o retorna para o visualizador. Sua distribuição não acompanha o redirecionamento.

Você pode configurar o servidor da web para redirecionar as solicitações para um destes locais:
+ O novo URL do objeto no servidor de origem. Ao seguir o redirecionamento para o novo URL, o visualizador ignora a distribuição e vai diretamente para a origem. Por isso, recomendamos que você não redirecione as solicitações para o novo URL do objeto na origem.
+ O novo URL da distribuição para o objeto. Quando o visualizador envia a solicitação que contém o novo URL da distribuição, ela obtém o objeto do novo local na sua origem, armazena-o em cache no local da borda e o retorna para o visualizador. As solicitações subsequentes do objeto são fornecidas pelo local da borda. Isso evita a latência e a carga associadas à solicitação do objeto pelo visualizador da origem. No entanto, cada nova solicitação do objeto ocasionará duas solicitações para a sua distribuição.

### Codificação de transferência
<a name="ResponseCustomTransferEncoding"></a>

As distribuições do Lightsail oferecem suporte somente ao valor `chunked` do cabeçalho. `Transfer-Encoding` Se a origem retornar `Transfer-Encoding: chunked`, sua distribuição retornará o objeto para o cliente assim que ele for recebido no local da borda e vai armazená-lo em blocos no cache para solicitações subsequentes.

Se o visualizador fizer uma solicitação `Range GET` e a origem retornar `Transfer-Encoding: chunked`, sua distribuição retornará o objeto inteiro para o visualizador, em vez do intervalo solicitado.

Recomendamos que você use codificação em partes se o tamanho do conteúdo da sua resposta não puder ser predeterminado. Para obter mais informações, consulte[Conexões TCP encerradas](#ResponseCustomDroppedTCPConnections).