Sobes.tech
Junior

Como definir cookies para que sejam apagados após 3 dias?

sobes.tech IA

Resposta da IA

Para definir um "cookie" com remoção após 3 dias, pode usar o atributo expires ou max-age.

  • expires: Define uma data e hora específicas de expiração. A data deve estar no formato GMT (Tempo Universal Coordenado).

  • max-age: Define o número de segundos após os quais o "cookie" deve expirar, começando a partir do momento da sua criação. É uma forma mais flexível e recomendada.

Exemplo em JavaScript usando max-age:

// Obter a hora atual em milissegundos
const now = new Date().getTime();

// Calcular o tempo em milissegundos para 3 dias
const threeDaysInMilliseconds = 3 * 24 * 60 * 60 * 1000;

// Calcular o tempo de expiração em milissegundos
const expirationTime = now + threeDaysInMilliseconds;

// Criar um objeto Date para a hora de expiração
const expirationDate = new Date(expirationTime);

// Definir o cookie com o atributo expires, convertendo a data para o formato GMT
//document.cookie = "myCookie=myValue; expires=" + expirationDate.toUTCString();

// Ou usar max-age (recomendado)
const threeDaysInSeconds = 3 * 24 * 60 * 60;
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds;

// Atributos adicionais para melhores práticas:
// secure - o cookie é enviado apenas via HTTPS
// HttpOnly - o cookie não é acessível via document.cookie (proteção contra XSS)
// path - caminho para o qual o cookie é válido
// domain - domínio para o qual o cookie é válido
// SameSite - impede o envio do cookie em requisições entre sites (recomendado: Strict, Lax)
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds + "; path=/; secure; SameSite=Lax";

Comparação entre expires e max-age:

Atributo Descrição Formato Vantagens Desvantagens
expires Indica uma data de expiração específica. Data no formato GMT. Compatibilidade com navegadores antigos. Depende do horário exato na máquina do cliente.
max-age Indica o número de segundos até a expiração. Número de segundos. Não depende do horário exato. Mais flexível. Recomendado. Pode não ser totalmente suportado em navegadores antigos.

Além disso, as "cookies" também podem ser definidas no lado do servidor, por exemplo, usando o cabeçalho Set-Cookie.

Set-Cookie: myCookie=myValue; Max-Age=259200; Path=/; Secure; SameSite=Lax

Aqui, Max-Age=259200 corresponde a 3 dias em segundos (3 * 24 * 60 * 60).