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 |