Quando um servidor da Web responde a uma solicitação de um recurso, ele pode incluir um cabeçalho
Set-Cookie
na resposta. Esse cabeçalho informa ao navegador para
armazenar um cookie. Por exemplo, Set-Cookie:cat=tabby
.
O que são cookies? explica como eles funcionam.
Além de fornecer um nome e um valor de cookie, Set-Cookie
pode incluir
atributos para controlar se os cookies são definidos e quando eles expiram. Os atributos de cookie são separados por ponto e vírgula. Exemplo:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
Este documento explica os atributos de cookie mais importantes:
Como usar cookies HTTP explica os atributos de cookies com mais detalhes técnicos.
Seguro
Se um cabeçalho Set-Cookie
incluir Secure
, o cookie só será incluído
em solicitações criptografadas que usam o protocolo HTTPS. Ele não será
incluído em solicitações HTTP. Isso pode ajudar a impedir ataques intermediários, em que um invasor intervém secretamente nas comunicações entre o navegador e o servidor para transmitir informações e possivelmente alterá-las.
HTTPOnly
Se um cabeçalho Set-Cookie
incluir HTTPOnly
, o JavaScript não poderá acessar o
cookie, por exemplo, usando document.cookie
. Isso ajuda na proteção contra determinados tipos de ataques
que têm cookies como alvo.
SameSite
Uma solicitação de um recurso de um site diferente daquele que você está visitando é uma solicitação entre sites. Um cookie definido em resposta a uma solicitação entre sites é um cookie de terceiros.
O atributo SameSite
controla se um cookie de terceiros será incluído
em uma solicitação. Ele tem três valores possíveis: Strict
, Lax
ou None
.
Saiba mais: O que são cookies de terceiros?
Estrito
O cookie só será enviado em resposta a solicitações de uma página que esteja no site de origem do cookie. Por exemplo, imagine que um usuário acesse cats.example
e tenha
um cookie definido com o atributo SameSite=Strict
. Mais tarde, o usuário está em um
site diferente e clica em um link para uma página no cats.example
. O cookie
definido não será incluído nessa solicitação.
Lax
Funciona da mesma forma que Strict
, mas o navegador também inclui
o cookie quando o usuário segue um link para o site de origem dele. No exemplo anterior de Strict
, o cookie seria incluído quando o usuário seguisse o link para cats.example
. Lax
é o padrão se nenhum atributo SameSite
for incluído em um cabeçalho Set-Cookie
.
Nenhum
Sem restrições: o cookie será incluído em uma solicitação, seja ela
entre sites ou não. Com SameSite=None
, o cookie também precisa ter o atributo
Secure
.
Particionada
Com esse atributo, é possível ativar um cookie no armazenamento particionado, com um "cookie jar" separado por site de nível superior. O cookie tem duas chaves, pelo site de nível superior e pelo domínio que o define.
Por exemplo, imagine que os sites A e B incluam um iframe do site C. Um cookie particionado definido pelo iframe no site A não pode ser acessado pelo iframe no site B: o cookie AC é separado do cookie BC.

Cookies com um atributo Partitioned
são conhecidos como CHIPS (Cookies com estado particionado independente).
Os cookies particionados precisam ter o atributo Secure
.
Saiba mais: Cookies com estado particionado independente.
Validade e idade máxima
Você pode especificar uma data e hora de Expires
ou um Max-Age
em segundos após o qual um cookie deve ser excluído e não mais enviado. Exemplo:
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
Set-Cookie:cat=tabby; Max-Age=86400
Se você não especificar um atributo Max-Age
ou Expires
, um cookie será
excluído quando a sessão atual terminar. Esse tipo de cookie às vezes é conhecido como cookie de sessão.
Domínio
Se um cabeçalho Set-Cookie
tiver um atributo Domain
, o cookie será incluído
com solicitações para o domínio especificado e qualquer um dos subdomínios dele.
Se um cabeçalho Set-Cookie
não tiver um atributo Domain
, o cookie não será incluído em solicitações para subdomínios.
Em outras palavras, incluir o atributo Domain
reduz as restrições de domínio.
Por exemplo, com uma resposta do site cats.example
:
Set-Cookie:cat=tabby
O cookie só será incluído em solicitações paracats.example
Set-Cookie:cat=tabby; Domain=cats.example
O cookie será incluído em solicitações paracats.example
e também em solicitações de recursos em subdomínios, comofluffy.cats.example
ouuser.assets.cats.example
.
Caminho
Se um atributo Path
for incluído em um cabeçalho de resposta Set-Cookie
, o cookie
definido só será incluído em solicitações para URLs (no site que definiu o
cookie) que correspondam ao valor Path
.
Exemplo:
Set-Cookie:cat=tabby; Path=/articles
O cookie será incluído em uma solicitação para qualquer caminho de URL que comece com/articles
:
✅https://cats.example/articles/tabby/index.html
✅https://cats.example/articles/breeds/tabby/index.html
❎https://cats.example/images/tabby.jpg
❎https://cats.example/en/articles/tabby/index.html
Set-Cookie:cat=tabby; Path=/
Todas as solicitações para qualquer URL no site vão incluir o cookie.
Se um cabeçalho de resposta Set-Cookie
não tiver um valor Path
, o cookie
só será incluído em solicitações para o mesmo diretório. Por exemplo, imagine que um cookie cat=tabby
seja definido em resposta a uma solicitação de cats.example/images/tabby.jpg.
. Se nenhum Path
for definido, o cookie só será incluído em solicitações de arquivos no diretório cats.example/images
.
Demonstrações
- 1pc.glitch.me: demonstração de cookie primário.
- 3pc.glitch.me: demonstração de cookie de terceiros
Ferramentas
- Ver, adicionar, editar e excluir cookies no Chrome DevTools
- Ferramenta de análise de dados do Sandbox de privacidade
Saiba mais
- Receitas de cookies primários
- O que são cookies?
- O que são cookies de terceiros?
- Solicitação e resposta HTTP
- Ferramentas de cookies
- Demonstrações de cookies
- Como usar cookies HTTP
- Explicação sobre cookies SameSite
- OWASP: cookies