Sobes.tech
Junior

Explique a diferença entre cookies, sessionStorage e localStorage.

sobes.tech IA

Resposta da IA

Âmbito de aplicação: Os cookies estão disponíveis tanto do lado do cliente como do lado do servidor. sessionStorage e localStorage estão disponíveis apenas do lado do cliente.

Tempo de vida: Para os cookies, o tempo de vida é definido na sua criação (usando o atributo expires ou max-age). Se não for especificado, o cookie é eliminado ao fechar o navegador. sessionStorage armazena dados apenas durante a sessão atual (até fechar a aba ou janela do navegador). localStorage armazena dados indefinidamente, até serem explicitamente removidos.

Tamanho: O tamanho máximo para cookies é cerca de 4 KB. Para sessionStorage e localStorage, varia entre 5 MB a 10 MB, dependendo do navegador.

Envio com cada pedido: Os cookies são enviados automaticamente com cada pedido HTTP ao domínio para o qual foram definidos, o que pode aumentar o tráfego. Os dados em sessionStorage e localStorage não são enviados ao servidor.

Modo de acesso: O acesso aos cookies é feito através de document.cookie (string). O acesso a sessionStorage e localStorage é feito através dos objetos correspondentes usando os métodos setItem, getItem, removeItem e clear.

// Definir cookie
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";

// Obter cookie
let x = document.cookie;

// Definir dados em sessionStorage
sessionStorage.setItem("lastname", "Smith");

// Obter dados de sessionStorage
let y = sessionStorage.getItem("lastname");

// Definir dados em localStorage
localStorage.setItem("firstname", "Jane");

// Obter dados de localStorage
let z = localStorage.getItem("firstname");
Característica cookies sessionStorage localStorage
Ámbito de aplicação Cliente e Servidor Apenas Cliente Apenas Cliente
Tempo de vida Definido na criação (expires/max-age), ou até fechar o navegador Até fechar a aba/janela do navegador Indefinido (até ser removido explicitamente)
Tamanho ~4 KB ~5-10 MB (depende do navegador) ~5-10 MB (depende do navegador)
Envio com a requisição Sim Não Não
Acesso document.cookie sessionStorage.getItem/setItem localStorage.getItem/setItem