# Error Responses

import DocButton from '~/components/webkit/DocButton.vue';

:::caution[importante]
A Funcionalidade Error Responses foi substituída por **Custom Pages**. Para mais informações sobre o novo produto, acesse a [Referência de Custom Pages](/pt-br/documentacao/produtos/secure/custom-pages/).
:::

**Error Responses** é uma capacidade do Azion **Applications** que permite personalizar páginas de erro para os usuários com base no código de status recebido da origem.

Quando um usuário solicita conteúdo de uma application, a Azion envia a requisição para os servidores de origem. Como resposta, a origem envia de volta um código de status HTTP, o qual indica se a requisição foi ou não concluída.

Os códigos de status HTTP são números de três dígitos, agrupados em cinco categorias:

- Respostas de informação (1xx): o status da conexão ou o progresso antes da requisição ser completada.
- Respostas de sucesso (2xx): a requisição foi recebida, compreendida, aceita e processada com sucesso pela origem.
- Mensagens de redirecionamento (3xx): para atender à requisição, deve haver um redirecionamento.
- Respostas de erro do cliente (4xx): a requisição não pôde ser completada devido a um possível erro do cliente.
- Respostas de erro do servidor (5xx): o servidor não foi capaz de processar a requisição.

:::note
Para mais informações sobre status HTTP, consulte as [especificações de códigos de status HTTP](https://httpwg.org/specs/rfc9110.html#overview.of.status.codes).
:::

<DocButton href="/pt-br/documentacao/produtos/build/applications/cache-settings/#browser-cache-settings" label="Saiba mais sobre expiration settings" size="medium" />

Com a funcionalidade **Error Responses**, você pode personalizar como sua aplicação irá lidar com erros de *Cliente (4xx)* e *Servidor (5xx)*. Desta forma, quando uma requisição é feita para uma URL que não está na origem ou quando não se obteve resposta do servidor, o usuário pode ser redirecionado para uma página de erro personalizada, cujo conteúdo pode ser armazenado em cache.

## Implementação

| Escopo | Recurso |
| --- | --- |
| Primeiros passos de Applications | [Primeiros passos](/pt-br/documentacao/produtos/build/applications/primeiros-passos/) |
| Personalizar página de erro | [Como personalizar uma página de resposta de erro](/pt-br/documentacao/produtos/guias/personalizar-pagina-resposta-erro/) |

---

## Status Code 

Código que a Azion recebe quando se conecta à origem.

---

## Error Caching TTL 

Define o tempo, em segundos, que a página de erro ficará em cache antes de ser atualizada.

:::tip
Como geralmente páginas de erro são estáticas e não mudam com frequência, a Azion recomenda valores altos de cache. Dessa maneira, você pode otimizar a performance da sua aplicação, bem como o custo de processamento na origem.
:::

---

## URI 

Caminho para o arquivo (geralmente em HTML) com o conteúdo da página de erro que será entregue. Esse caminho é adicionado ao domínio do seu aplicativo. Por exemplo: `/404.html`.

---

## Custom Status Code

Código de status que será entregue ao usuário em vez do código original. Por exemplo, você pode definir que o código `404` seja fornecido em resposta a um erro `403`.

---

## Set Origin

A origem em que o arquivo da URI está localizado. Só pode ser alterada se uma URI for adicionada. Deve ser configurada usando **Origins**.

<DocButton href="/pt-br/documentacao/produtos/build/applications/origins/" label="Saiba mais sobre Origins" size="medium" />

---

## Códigos de erro disponíveis

| Código de status | Descrição |
| --- | --- |
| 400: Bad Request | Erro na requisição, tais como parâmetros inválidos, ausência de parâmetros obrigatórios ou outros. |
| 401: Unauthorized | Erro resultante da ausência do cabeçalho HTTP `Authentication`. |
| 403: Forbidden | Falta de permissão do usuário para executar a operação solicitada. |
| 404: Not Found | O recurso solicitado não existe. |
| 405: Method Not Allowed | O método solicitado não é aplicável à URL. |
| 406: Not Acceptable | Ausência do cabeçalho `Accept` na requisição HTTP ou cabeçalho contendo formato ou versão não suportados pela API. |
| 408: Request Timeout | Esta resposta é enviada por alguns servidores em uma conexão ociosa, mesmo sem qualquer requisição prévia pelo cliente. Ela significa que o servidor gostaria de derrubar esta conexão em desuso.<br /><br />Esta resposta é muito usada já que alguns navegadores, como Chrome, Firefox 27+, ou IE9 usam mecanismos HTTP de pré-conexão para acelerar a navegação. Note também que alguns servidores derrubam a conexão sem enviar esta mensagem. |
| 409: Conflict | Conflito na execução da requisição, como a solicitação de criação de um registro já existente. |
| 410: Gone | Esta resposta será enviada quando o conteúdo requisitado foi permanentemente deletado do servidor, sem nenhum endereço de redirecionamento. É esperado que clientes removam seus caches e links para o recurso.<br /><br />A especificação HTTP espera que este código de status seja usado para "serviços promocionais de tempo limitado". APIs não devem se sentir obrigadas a indicar que recursos foram removidos com este código de status. |
| 411: Length Required | O servidor rejeitou a requisição porque o campo `Content-Length` do cabeçalho não está definido e o servidor o requer. |
| 414: URI Too Long | A URI requisitada pelo cliente é maior do que o servidor aceita para interpretar. |
| 415: Unsupported Media Type | O formato de mídia dos dados requisitados não é suportado pelo servidor, então o servidor rejeita a requisição. |
| 416: Request Range Not Satisfiable | O trecho especificado pelo campo `Range` do cabeçalho na requisição não pode ser preenchido; é possível que o trecho esteja fora do tamanho dos dados da URI alvo. |
| 426: Upgrade Required | O servidor se recusa a executar a requisição usando o protocolo corrente mas estará pronto a fazê-lo após o cliente atualizar para um protocolo diferente. O servidor envia um cabeçalho Upgrade numa resposta 426 para indicar o(s) protocolo(s) requeridos. |
| 429: Too Many Requests | A requisição foi rejeitada temporariamente por exceder o limite de operações. Aguarde até o momento definido no cabeçalho `X-Ratelimit-Reset` e tente novamente. |
| 431: Request Header Fields Too Large | O cabeçalho da requisição é muito longo ou muitos cookies foram enviados na requisição. |
| 500: Internal Server Error | Erro não intencional, por falha não identificada no processamento da requisição. |
| 501: Not Implemented | O método da requisição não é suportado pelo servidor e não pode ser manipulado. Os únicos métodos exigidos que servidores suportem (e portanto não devem retornar este código) são GET e HEAD. |
| 502: Bad Gateway | Esta resposta de erro significa que o servidor, ao trabalhar como um gateway a fim de obter uma resposta necessária para manipular a requisição, obteve uma resposta inválida. |
| 503: Service Unavailable | O servidor não está pronto para manipular a requisição. Causas comuns são um servidor em manutenção ou sobrecarregado. É uma boa prática enviar, junto dessa resposta, uma página explicativa sobre o problema.<br /><br />Estas respostas devem ser usadas para condições temporárias e o cabeçalho `Retry-After` deverá, se possível, conter o tempo estimado para recuperação do serviço. O webmaster deve também tomar cuidado com os cabeçalhos relacionados com o cache que são enviados com esta resposta, já que estas respostas de condições temporárias normalmente não deveriam ser postas em cache. |
| 504: Gateway Timeout | Esta resposta de erro é dada quando o servidor está atuando como um gateway e não obtém uma resposta a tempo. |
| 505: HTTP Version Not Supported | A versão HTTP usada na requisição não é suportada pelo servidor. |



---