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, especificamente as seções Cookies progressivos e Lista de permissões de cookies.
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 cacheSet-Cookie
com o objeto retornado da origem e envia esses cabeçalhosSet-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 cacheSet-Cookie
com o objeto retornado da origem e envia esses cabeçalhosSet-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.
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).
-
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 Configurar e usar logs padrão (logs de acesso).
- 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.
nota
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
eIf-None-Match
-
As solicitações condicionais
If-Modified-Since
eIf-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
, 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çalhosSet-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çalhoCache-Control
com uma diretivano-cache
que especifiqueSet-Cookie
como um nome de campo. Por exemplo:Cache-Control: no-cache="Set-Cookie"
. Para obter mais informações, consulte Response Cache-Control Directivesno 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. Para obter informações sobre como usar a API do CloudFront para atualizar uma distribuição, consulte UpdateDistribution na Referência da API do Amazon CloudFront.