

# Conteúdo em cache com base em cookies
<a name="Cookies"></a>

Por padrão, o CloudFront não considera cookies ao processar solicitações e respostas, nem ao armazenar os objetos em cache em pontos de presença. Se o CloudFront receber duas solicitações idênticas, exceto pelo que está no cabeçalho `Cookie`, por padrão, o CloudFront tratará as solicitações como idênticas e retornará o mesmo objeto para as duas solicitações.

É possível configurar o CloudFront para encaminhar à origem alguns ou todos os cookies em solicitações de visualizador e armazenar em cache versões separadas dos objetos com base nos valores de cookie encaminhados. Ao fazer isso, o CloudFront usa alguns ou todos os cookies das solicitações de visualizador (todos os que estiverem configurados para serem encaminhados) a fim de identificar exclusivamente um objeto no cache.

Por exemplo, imagine que as solicitações de `locations.html` contêm um cookie `country` com um valor de `uk` ou `fr`. Ao configurar o CloudFront para armazenar os objetos em cache com base no valor do cookie `country`, o CloudFront encaminhará as solicitações de `locations.html` para a origem e incluirá o cookie `country` e os respectivos valores. Sua origem retornará `locations.html`, e o CloudFront armazenará o objeto em cache uma vez para solicitações em que o valor do cookie `country` é `uk` e uma vez para solicitações em que o valor for `fr`.

**Importante**  
O Amazon S3 e alguns servidores HTTP não processam cookies. Não configure o CloudFront para encaminhar cookies a uma origem que não processe cookies ou que não varie a resposta com base em cookies. Isso pode fazer com que o CloudFront encaminhe mais solicitações para a origem para o mesmo objeto, o que reduz a performance e aumenta a carga na origem. Ao considerar o exemplo anterior, se sua origem não processar o cookie `country` ou sempre retornar a mesma versão de `locations.html` para o CloudFront, independentemente do valor do cookie `country`, não configure o CloudFront para encaminhar esse cookie.  
Por outro lado, se a origem personalizada depender de um cookie específico ou enviar respostas diferentes com base em um cookie, configure o CloudFront para encaminhar esse cookie para a origem. Caso contrário, o CloudFront remove o cookie antes de encaminhar a solicitação para a origem.

Para configurar o encaminhamento de cookies, atualize o comportamento de cache da sua distribuição. Para obter mais informações sobre comportamentos de cache, consulte [Configurações de comportamento de cache](DownloadDistValuesCacheBehavior.md), especificamente as seções [Cookies progressivos](DownloadDistValuesCacheBehavior.md#DownloadDistValuesForwardCookies) e [Lista de permissões de cookies](DownloadDistValuesCacheBehavior.md#DownloadDistValuesAllowlistCookies).

Você pode configurar cada comportamento de cache para realizar uma das seguintes ações:
+ **Encaminhar todos os cookies para a origem:** o CloudFront inclui todos os cookies enviados pelo visualizador ao encaminhar solicitações para a origem. Quando a origem retorna uma resposta, o CloudFront armazena a resposta em cache usando os nomes e os valores de cookie na solicitação do visualizador. Se a resposta da origem incluir cabeçalhos `Set-Cookie`, o CloudFront os retornará ao visualizador com o objeto solicitado. O CloudFront também armazena os cabeçalhos em cache `Set-Cookie` com o objeto retornado da origem e envia esses cabeçalhos `Set-Cookie` para visualizadores em todos os acertos do cache.
+ **Encaminhar um conjunto de cookies especificados:** o CloudFront remove todos os cookies enviados pelo visualizador que não estejam na lista de permissões antes de encaminhar uma solicitação para a origem. O CloudFront armazena a resposta em cache usando os nomes e valores de cookies na lista na solicitação do visualizador. Se a resposta da origem incluir cabeçalhos `Set-Cookie`, o CloudFront os retornará ao visualizador com o objeto solicitado. O CloudFront também armazena os cabeçalhos em cache `Set-Cookie` com o objeto retornado da origem e envia esses cabeçalhos `Set-Cookie` para visualizadores em todos os acertos do cache.

  Para obter informações sobre como especificar curingas em nomes de cookies, consulte [Lista de permissões de cookies](DownloadDistValuesCacheBehavior.md#DownloadDistValuesAllowlistCookies).

  Para saber a cota atual do número de nomes de cookies que você pode encaminhar para cada comportamento de cache ou para solicitar uma cota maior, consulte [Cotas em cadeias de consulta (configurações de cache herdadas)](cloudfront-limits.md#limits-allowlisted-query-strings).
+ **Não encaminhar cookies para a origem:** o CloudFront não armazena os objetos em cache com base no cookie enviado pelo visualizador. Além disso, o CloudFront remove os cookies antes de encaminhar as solicitações para a origem e remove os cabeçalhos `Set-Cookie` das respostas antes de retorná-las aos visualizadores. Como essa não é uma maneira ideal de usar seus recursos de origem, ao selecionar esse comportamento de cache, certifique-se de que sua origem não inclua cookies nas respostas de origem por padrão.

Observações sobre como especificar os cookies que você deseja encaminhar:

**Logs de acesso**  
Se você configurar o CloudFront para registrar solicitações e cookies em log, o CloudFront registrará todos os cookies e atributos de cookie em log, mesmo que você configure o CloudFront para não encaminhar cookies para a origem ou configure o CloudFront para encaminhar somente cookies específicos. Para obter mais informações sobre o log do CloudFront, consulte [Logs de acesso (logs padrão)](AccessLogs.md).

**Diferenciação de letras maiúsculas e minúsculas**  
Os nomes e valores de cookie diferenciam letras maiúsculas e minúsculas. Por exemplo, se o CloudFront estiver configurado para encaminhar todos os cookies, e duas solicitações de visualizador para o mesmo objeto tiverem cookies idênticos, apenas com diferenças de maiúsculas e minúsculas, o CloudFront armazenará o objeto em cache duas vezes.

**O CloudFront classifica cookies**  
Se o CloudFront estiver configurado para encaminhar cookies (todos ou um subconjunto), ele classificará os cookies na ordem natural pelo nome do cookie antes de encaminhar a solicitação para a origem.  
 Nomes de cookies que comecem com o caractere `$` não são aceitos. O CloudFront removerá o cookie antes de encaminhar a solicitação para a origem. É possível remover o caractere `$` ou especificar outro caractere no início do nome do cookie.

**`If-Modified-Since` e da `If-None-Match`**  
As solicitações condicionais `If-Modified-Since` e `If-None-Match` não são compatíveis com o CloudFront quando ele estiver configurado para encaminhar cookies (todos ou um subconjunto).

**O formato padrão do par nome-valor é obrigatório**  
O CloudFront encaminhará um cabeçalho de cookie somente se o valor estiver em conformidade com o [formato padrão do par nome-valor](https://tools.ietf.org/html/rfc6265#section-4.1.1), por exemplo: `"Cookie: cookie1=value1; cookie2=value2"`

**Desativar o armazenamento em cache de cabeçalhos `Set-Cookie`**  
Se o CloudFront estiver configurado para encaminhar cookies para a origem (sejam todos ou alguns específicos), ele também armazenará em cache os cabeçalhos `Set-Cookie` recebidos na resposta da origem. O CloudFront inclui esses cabeçalhos `Set-Cookie` em sua resposta ao visualizador original e também os inclui em respostas subsequentes que são fornecidas do cache do CloudFront.  
Se você quiser receber cookies na origem, mas não quiser que o CloudFront armazene os cabeçalhos `Set-Cookie` nas respostas da origem, configure a origem para adicionar um cabeçalho `Cache-Control` com uma diretiva `no-cache` que especifique `Set-Cookie` como um nome de campo. Por exemplo: `Cache-Control: no-cache="Set-Cookie"`. Para obter mais informações, consulte [Response Cache-Control Directives](https://tools.ietf.org/html/rfc7234#section-5.2.2) no padrão *Hypertext Transfer Protocol (HTTP/1.1): Caching*.

**Tamanho máximo dos nomes de cookies**  
Se você configurar o CloudFront para encaminhar cookies específicos para sua origem, o número total de bytes em todos os nomes de cookies que o CloudFront foi configurado para encaminhar não poderá exceder 512 menos o número de cookies que serão encaminhados. Por exemplo, se você configurar o CloudFront para encaminhar 10 cookies para a origem, o tamanho total dos nomes de todos eles não poderá ultrapassar 502 bytes (512 a 10).  
Se você configurar o CloudFront para encaminhar todos os cookies para a origem, o tamanho dos nomes dos cookies não importará.

Para obter informações sobre como usar o console do CloudFront para atualizar uma distribuição para que o CloudFront encaminhe cookies para a origem, consulte [Atualizar uma distribuição](HowToUpdateDistribution.md). Para obter informações sobre como usar a API do CloudFront para atualizar uma distribuição, consulte [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) na *Referência da API do Amazon CloudFront*.