# Custom Pages

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

import Tabs from '~/components/tabs/Tabs'
import Apiv4Rollout from '~/includes/snippets/apiv4Rollout/pt/snippet.mdx'


<Apiv4Rollout />

:::note[Nota]
Esta página documenta o novo produto Custom Pages. Se sua conta ainda não foi migrada, consulte a [documentação legada de Error Responses](/pt-br/documentacao/produtos/build/applications/error-responses/).
:::

**Custom Pages** é um recurso da Azion que permite personalizar páginas de erro para os usuários com base no código de status recebido de um [Connector](/pt-br/documentacao/produtos/secure/connectors/).

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

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

Com o **Custom Pages**, é possível customizar como sua aplicação irá tratar erros do tipo *Cliente (4xx)* e *Servidor (5xx)*. Assim, quando uma requisição é feita para uma URL que não pode ser encontrada na origem ou quando o servidor não consegue responder, o usuário será redirecionado para uma página de erro personalizada, cujo conteúdo pode ser armazenado em cache.

## Implementação

| Escopo | Recurso |
| --- | --- |
| Primeiros passos com Applications | [Primeiros passos](/pt-br/documentacao/produtos/build/applications/primeiros-passos/) |
| Personalizando página de erro | [Como personalizar uma página de resposta de erro](/pt-br/documentacao/produtos/guias/personalizar-pagina-resposta-erro/) |
| Connectors | [Referência do Connectors](/pt-br/documentacao/produtos/secure/connectors/) |
| Workloads | [Referência de Workloads](/pt-br/documentacao/produtos/secure/workloads/) |
| API de Custom Pages | [Referência da API](https://api.azion.com/v4#/operations/GetWorkspaceCustomPages) |

---

## Page Codes

O código que a Azion recebe do Connectors ao conectar na origem.

Estes são os códigos de status disponíveis:

| Código de status | Descrição |
| --- | --- |
| 400: Bad Request | Erro de requisição causado por parâmetros inválidos, parâmetros obrigatórios ausentes ou outros. |
| 401: Unauthorized | Erro resultante da ausência do cabeçalho HTTP `Authentication`. |
| 403: Forbidden | Falta de permissões do usuário para executar a operação. |
| 404: Not Found | O recurso solicitado não existe. |
| 405: Method Not Allowed | O método solicitado não pode ser aplicado à URL. |
| 406: Not Acceptable | O cabeçalho `Accept` não foi encontrado na requisição HTTP ou o cabeçalho contém conteúdo cujo formato ou versão não é suportado pela API. |
| 408: Request Timeout | O servidor informa que a requisição está chegando mais devagar do que o servidor está preparado para esperar. Isso significa que o servidor gostaria de encerrar a conexão.<br /><br />Essa resposta é frequentemente utilizada, pois alguns navegadores, como Chrome, Firefox 27+ ou IE9, usam pré-conexão HTTP para acelerar a navegação. Além disso, alguns servidores encerram a conexão sem enviar essa mensagem. |
| 409: Conflict | Conflito na execução da requisição, como a criação de um registro já existente. |
| 410: Gone | Essa resposta é enviada quando o conteúdo solicitado foi permanentemente removido do servidor, sem um endereço de redirecionamento definido. Se esse erro ocorrer, quaisquer caches ou links para esse recurso devem ser removidos.<br /><br />A especificação HTTP descreve que esse código deve ser usado para "serviços promocionais limitados". APIs não devem ser feitas para indicar quais recursos foram removidos com esse código de status. |
| 411: Length Required | O servidor rejeitou a requisição porque o cabeçalho `Content-Length` está indefinido, mas é obrigatório para o servidor. |
| 414: URI Too Long | A URI solicitada é maior do que os limites do servidor. |
| 415: Unsupported Media Type | O formato de mídia dos dados solicitados não é suportado pelo servidor, por isso a requisição é rejeitada. |
| 416: Request Range Not Satisfiable | O valor especificado pelo cabeçalho `Range` não pôde ser atendido; provavelmente está fora do intervalo dos dados da URI de destino. |
| 426: Upgrade Required | O servidor se recusa a executar a requisição usando o protocolo atual, mas estará pronto para fazê-lo após o cliente atualizar para um protocolo diferente. O servidor envia um cabeçalho de resposta `Upgrade` para indicar os protocolos necessários. |
| 429: Too Many Requests | A requisição foi temporariamente rejeitada por exceder os limites de operação. O cliente deve aguardar até o momento definido no `X-Ratelimit-Reset` e tentar novamente. |
| 431: Request Header Fields Too Large | Os cabeçalhos da requisição são muito longos ou muitos cookies foram enviados na requisição. |
| 500: Internal Server Error | Erro não intencional, falha não identificada no processamento da requisição. |
| 501: Not Implemented | O método de requisição não é suportado pelo servidor e não pode ser modificado. Os únicos métodos obrigatórios para suporte dos servidores (e que, portanto, não devem retornar esse código) são GET e HEAD. |
| 502: Bad Gateway | Essa resposta de erro significa que o servidor, atuando como gateway para 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 lidar com a requisição. Causas comuns são servidor sobrecarregado ou em manutenção. Junto a essa resposta, uma página amigável explicando o problema deve ser enviada.<br /><br />Essas respostas devem ser usadas para condições temporárias e o cabeçalho `Retry-After` deve conter o tempo estimado para a recuperação do serviço. O webmaster também deve ter cuidado com os cabeçalhos de cache enviados com essa resposta, pois essas respostas de condição temporária normalmente não devem ser armazenadas em cache. |
| 504: Gateway Timeout | Essa resposta de erro é enviada quando o servidor está atuando como gateway e não obtém uma resposta a tempo. |
| 505: HTTP Version Not Supported | A versão HTTP utilizada na requisição não é suportada pelo servidor. |

---

## Response TTL

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

<DocButton href="/pt-br/documentacao/produtos/build/applications/cache-settings/#browser-cache-settings" label="Saiba mais sobre configurações de expiração de cache" size="medium" />

---

## Page Path (URI)

Este caminho especifica a URL interna da qual seu **Connectors** entrega o payload. Por exemplo, se você definir o caminho como `/myerrors/505.html` e o endereço do seu **Connector** for `myconnector.azion.com`, o conteúdo será buscado e entregue a partir de `myconnector.azion.com/myerrors/505.html`.

---

## Response Custom Status Code

Código de status que será entregue ao usuário em vez do original. Por exemplo, você pode configurar a aplicação para retornar um código de resposta `404` quando ocorrer um erro `403`.

---