

# Como o CloudFront processa códigos de status HTTP 4xx e 5xx da origem
<a name="HTTPStatusCodes"></a>

Quando o CloudFront solicita um objeto do bucket do Amazon S3 ou servidor de origem personalizada, a origem pode retornar um código de status HTTP 4xx ou 5xx, que indica um erro. O comportamento do CloudFront depende do seguinte:
+ Se você configurou páginas de erro personalizadas
+ Se você configurou o tempo que o CloudFront armazenará em cache as respostas a erros da origem (TTL mínima de armazenamento de erros em cache).
+ O código do status
+ Em relação a códigos de status 5xx, se o objeto solicitado estiver no cache de borda do CloudFront.
+ Para alguns códigos de status 4xx, se a origem exibir um cabeçalho `Cache-Control max-age` ou `Cache-Control s-maxage`

O CloudFront sempre armazena respostas às solicitações `GET` e `HEAD` em cache. Também é possível configurar o CloudFront para armazenar respostas a solicitações `OPTIONS` em cache. O CloudFront não armazena em cache respostas a solicitações que usam outros métodos.

Se a origem não responder, a solicitação do CloudFront à origem expirará, o que é considerado um erro HTTP 5xx da origem, mesmo que a origem não tenha respondido com esse erro. Nessa situação, o CloudFront continua fornecendo conteúdo armazenado em cache. Para obter mais informações, consulte [Origem indisponível](RequestAndResponseBehaviorCustomOrigin.md#ResponseCustomOriginUnavailable).

Se você ativou o registro em log, o CloudFront gravará os resultados nos logs, independentemente do código de status HTTP.

Para mais informações sobre os recursos e as opções relacionadas à mensagem de erro retornada pelo CloudFront, consulte o seguinte:
+ Para obter informações sobre as configurações de páginas de erro personalizadas no console do CloudFront, consulte [Páginas de erro personalizadas e erro de armazenamento em cache](DownloadDistValuesErrorPages.md). 
+ Para mais informações sobre o TTL mínimo de armazenamento de erros em cache no console do CloudFront, consulte [Erro ao armazenar TTL mínimo em cache (segundos)](DownloadDistValuesErrorPages.md#DownloadDistValuesErrorCachingMinTTL).
+ Para consultar uma lista de códigos de status HTTP armazenados em cache pelo CloudFront, consulte [Códigos de status HTTP 4xx e 5xx armazenados em cache pelo CloudFront](#HTTPStatusCodes-cached-errors).

**Topics**
+ [Como o CloudFront processará erros quando páginas de erro personalizadas estiverem configuradas](#HTTPStatusCodes-custom-error-pages)
+ [Como o CloudFront processará erros se você não tiver configurado páginas de erro personalizadas](#HTTPStatusCodes-no-custom-error-pages)
+ [Códigos de status HTTP 4xx e 5xx armazenados em cache pelo CloudFront](#HTTPStatusCodes-cached-errors)

## Como o CloudFront processará erros quando páginas de erro personalizadas estiverem configuradas
<a name="HTTPStatusCodes-custom-error-pages"></a>

Se você configurou páginas de erro personalizadas, o comportamento do CloudFront será determinado de acordo com o objeto solicitado estar ou não no cache de ponto de presença.

### O objeto solicitado não está no cache de borda
<a name="HTTPStatusCodes-custom-error-pages-not-in-cache"></a>

O CloudFront continuará tentando obter o objeto solicitado da origem quando todas estas opções forem verdadeiras:
+ Um visualizador solicita um objeto.
+ O objeto não está no ponto de presença de caches
+ Sua origem retorna um código de status HTTP 4xx ou 5xx e uma das seguintes situações é verdadeira:
  + A origem retorna um código de status HTTP 5xx, em vez de retornar um código de status 304 (Não modificado) ou uma versão atualizada do objeto
  + A origem retorna um código de status HTTP 4xx que não é restrito por um cabeçalho de controle de cache e é incluído na seguinte lista de códigos de status: [Códigos de status HTTP 4xx e 5xx armazenados em cache pelo CloudFront](#HTTPStatusCodes-cached-errors).
  + A origem exibe um código de status HTTP 4xx com um cabeçalho `Cache-Control max-age` ou `Cache-Control s-maxage` e o código de status é incluído na seguinte lista de códigos de status: Control [Códigos de status HTTP 4xx que o CloudFront armazena em cache com base em cabeçalhos de `Cache-Control`](#HTTPStatusCodes-cached-errors-with-cache-control).

**O CloudFront faz o seguinte:**

1. No cache de ponto de presença do CloudFront que recebeu a solicitação do visualizador, o CloudFront verifica a configuração da distribuição e obtém o caminho da página de erro personalizada correspondente ao código de status retornado pela origem. 

1. O CloudFront encontra o primeiro comportamento de cache na distribuição que tem um padrão de caminho correspondente ao caminho da página de erro personalizada.

1. O ponto de presença do CloudFront envia uma solicitação da página de erro personalizada à origem especificada no comportamento de cache.

1. A origem retorna a página de erro personalizada para o ponto de presença.

1. O CloudFront retorna a página de erro personalizada ao visualizador que fez a solicitação e a armazena em cache por no máximo: 
   + A quantidade de tempo especificada pelo TTL mínimo de armazenamento de erros em cache (10 segundos, por padrão)
   + A quantidade de tempo especificada por um cabeçalho `Cache-Control max-age` ou `Cache-Control s-maxage` retornado pela origem quando a primeira solicitação gerou o erro.

1. Após o término do tempo de armazenamento em cache (determinado na Etapa 5), o CloudFront tentará obter o objeto solicitado novamente encaminhando outra solicitação à origem. O CloudFront continua tentando em intervalos especificados pelo TTL mínimo de armazenamento de erros em cache. 

**nota**  
Se você também configurou um comportamento de cache para a mesma página de erro personalizada, o CloudFront usará o TTL do comportamento de cache em vez disso. Nesse caso, o CloudFront realizará o seguinte nas etapas 5 e 6:  
Depois de exibir a página de erro personalizada ao visualizador que fez a solicitação, o CloudFront verifica o TTL do comportamento de cache (por exemplo, você definiu o TTL padrão como 5 segundos). Em seguida, o CloudFront armazena em cache a página de erro personalizada até esse limite máximo.
Após 5 segundos, o CloudFront busca novamente a página de erro personalizada da origem. O CloudFront continuará tentando em intervalos especificados pelo TTL do comportamento de cache.
Para ter mais informações, consulte as [configurações de TTL](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMinTTL) de comportamento de cache.

### O objeto solicitado está no cache de borda
<a name="HTTPStatusCodes-custom-error-pages-in-cache"></a>

O CloudFront continuará fornecendo o objeto que está no cache de ponto de presença quando todas estas opções forem verdadeiras:
+ Um visualizador solicita um objeto.
+ O objeto está no cache do ponto de presença, mas expirou
+ A origem retorna um código de status HTTP 5xx, em vez de retornar um código de status 304 (Não modificado) ou uma versão atualizada do objeto

**O CloudFront faz o seguinte:**

1. Se a origem retornar um código de status 5xx, o CloudFront fornecerá o objeto mesmo se ele tiver expirado. Pela duração do TTL mínimo de armazenamento de erros em cache, o CloudFront continuará respondendo a solicitações do visualizador fornecendo o objeto do cache do ponto de presença. 

   Se a origem retornar um código de status 4xx, o CloudFront retornará o código de status ao visualizador, não o objeto solicitado. 

1. Após o término desse TTL mínimo, o CloudFront tentará obter o objeto solicitado novamente encaminhando outra solicitação para a origem. Observe que, se o objeto não for solicitado com frequência, o CloudFront poderá removê-lo do cache do ponto de presença enquanto o servidor de origem ainda estiver retornando respostas 5xx. Para obter informações sobre o tempo de permanência de objetos de caches de ponto de presença do CloudFront, consulte [Gerenciar o tempo de permanência do conteúdo no cache (expiração)](Expiration.md).

## Como o CloudFront processará erros se você não tiver configurado páginas de erro personalizadas
<a name="HTTPStatusCodes-no-custom-error-pages"></a>

Se você não tiver configurado páginas de erro personalizadas, o comportamento do CloudFront será determinado de acordo com o objeto solicitado estar ou não no cache da borda.

**Topics**
+ [O objeto solicitado não está no cache de borda](#HTTPStatusCodes-no-custom-error-pages-not-in-cache)
+ [O objeto solicitado está no cache de borda](#HTTPStatusCodes-no-custom-error-pages-in-cache)

### O objeto solicitado não está no cache de borda
<a name="HTTPStatusCodes-no-custom-error-pages-not-in-cache"></a>

O CloudFront continuará tentando obter o objeto solicitado da origem quando todas estas opções forem verdadeiras:
+ Um visualizador solicita um objeto.
+ O objeto não está no ponto de presença de caches
+ Sua origem retorna um código de status HTTP 4xx ou 5xx e uma das seguintes situações é verdadeira:
  + A origem retorna um código de status HTTP 5xx, em vez de retornar um código de status 304 (Não modificado) ou uma versão atualizada do objeto
  + A origem retorna um código de status HTTP 4xx que não é restrito por um cabeçalho de controle de cache e é incluído na seguinte lista de códigos de status: [Códigos de status HTTP 4xx e 5xx armazenados em cache pelo CloudFront](#HTTPStatusCodes-cached-errors)
  + A origem exibe um código de status HTTP 4xx com um cabeçalho `Cache-Control max-age` ou `Cache-Control s-maxage` e o código de status é incluído na seguinte lista de códigos de status: Control [Códigos de status HTTP 4xx que o CloudFront armazena em cache com base em cabeçalhos de `Cache-Control`](#HTTPStatusCodes-cached-errors-with-cache-control).

O CloudFront faz o seguinte:

1. O CloudFront retorna o código de status 4xx ou 5xx ao visualizador e também armazena o código de status no cache do ponto de presença que recebeu a solicitação por no máximo: 
   + A quantidade de tempo especificada pelo TTL mínimo de armazenamento de erros em cache (10 segundos, por padrão)
   + A quantidade de tempo especificada por um cabeçalho `Cache-Control max-age` ou `Cache-Control s-maxage` retornado pela origem quando a primeira solicitação gerou o erro.

1. Durante o tempo de armazenamento em cache (determinado na etapa 1), o CloudFront responderá a solicitações subsequentes do visualizador do mesmo objeto com o código de status 4xx ou 5xx armazenado em cache. 

1. Após o término do tempo de armazenamento em cache (determinado na Etapa 1), o CloudFront tentará obter o objeto solicitado novamente encaminhando outra solicitação à origem. O CloudFront continua tentando em intervalos especificados pelo TTL mínimo de armazenamento de erros em cache. 

### O objeto solicitado está no cache de borda
<a name="HTTPStatusCodes-no-custom-error-pages-in-cache"></a>

O CloudFront continuará fornecendo o objeto que está no cache de ponto de presença quando todas estas opções forem verdadeiras:
+ Um visualizador solicita um objeto.
+ O objeto está no cache do ponto de presença, mas expirou Isso significa que o objeto está *obsoleto*.
+ A origem retorna um código de status HTTP 5xx, em vez de retornar um código de status 304 (Não modificado) ou uma versão atualizada do objeto

O CloudFront faz o seguinte:

1. Se a origem retornar um código de erro 5xx, o CloudFront fornecerá o objeto mesmo se ele tiver expirado. Pela duração do TTL mínimo de armazenamento de erros em cache (10 segundos, por padrão), o CloudFront continua respondendo a solicitações do visualizador fornecendo o objeto do cache de ponto de presença. 

   Se a origem retornar um código de status 4xx, o CloudFront retornará o código de status ao visualizador, não o objeto solicitado. 

1. Após o término desse TTL mínimo, o CloudFront tentará obter o objeto solicitado novamente encaminhando outra solicitação para a origem. Se o objeto não for solicitado com frequência, o CloudFront poderá removê-lo do cache da borda enquanto o servidor de origem ainda estiver retornando respostas 5xx. Para obter mais informações, consulte [Gerenciar o tempo de permanência do conteúdo no cache (expiração)](Expiration.md).

**dica**  
Se você configurar a diretiva `stale-if-error` ou `Stale-While-Revalidate`, poderá especificar por quanto tempo os objetos obsoletos estarão disponíveis no cache da borda. Isso permite que você continue fornecendo conteúdo para os visualizadores mesmo quando a origem não estiver disponível. Para mais informações, consulte [Fornecer conteúdo obsoleto (expirado)](Expiration.md#stale-content). 
O CloudFront fornecerá somente um objeto que esteja obsoleto até o valor [máximo de TTL](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMaxTTL) especificado. Após essa duração, o objeto não estará disponível no cache da borda.

## Códigos de status HTTP 4xx e 5xx armazenados em cache pelo CloudFront
<a name="HTTPStatusCodes-cached-errors"></a>

O CloudFront armazena em cache os códigos de status HTTP 4xx e 5xx retornados pela origem, dependendo do código de status específico que é retornado e se a origem retorna cabeçalhos específicos na resposta.

O CloudFront armazena em cache os códigos de status HTTP 4xx e 5xx a seguir que são exibidos pela origem. Se você configurou uma página de erro personalizada para um código de status HTTP, o CloudFront a armazenará em cache. 

**nota**  
Se você estiver usando a política de cache gerenciada [CachingDisabled](using-managed-cache-policies.md#managed-cache-policy-caching-disabled), o CloudFront não armazenará esses códigos de status nem páginas de erro personalizadas.


|  |  | 
| --- |--- |
|  404  |  Não encontrado  | 
|  414  |  URI da solicitação muito grande  | 
|  500  |  Internal Server Error  | 
|  501  |  Não implementado  | 
|  502  |  Gateway inválido  | 
|  503  |  Serviço indisponível  | 
|  504  |  Tempo limite do gateway  | 

### Códigos de status HTTP 4xx que o CloudFront armazena em cache com base em cabeçalhos de `Cache-Control`
<a name="HTTPStatusCodes-cached-errors-with-cache-control"></a>

O CloudFront apenas armazena os seguintes códigos de status HTTP 4xx retornados pela origem se a origem retornar um cabeçalho `Cache-Control max-age` ou `Cache-Control s-maxage`. Se você configurou uma página de erro personalizada para um dos códigos de status HTTP a seguir, e a origem exibir um dos cabeçalhos de controle de cache, o CloudFront a armazenará em cache. 


|  |  | 
| --- |--- |
|  400  |  Solicitação inválida  | 
|  403  |  Proibido  | 
|  405  |  Método não permitido  | 
|  412¹  |  Falha na pré-condição  | 
|  415¹  |  Tipo de mídia incompatível  | 

¹ O CloudFront não é compatível com a criação de páginas de erro personalizadas para esses códigos de status HTTP.