Leodario.com

Leodario.com – Tudo sobre Tecnologia

Aula 40 – API JavaScript, Node.js e Express – Cookie Handling – cookie-parser

Imagem destacada da aula de API

Introdução (3 min)

Imagine um restaurante que se lembra do seu pedido favorito. Você entra, e o garçom já sabe que você quer o frango grelhado com arroz integral. Isso é, em essência, o que os cookies fazem na web: armazenam pequenas informações no navegador do cliente para personalizar sua experiência. Em APIs modernas, esse mecanismo é essencial para gerenciar sessões de usuário, carrinhos de compra e preferências individuais. Nesta aula, você vai dominar o uso do cookie-parser, um middleware fundamental no ecossistema Node.js/Express, para manipular cookies com segurança e eficiência em suas aplicações.

Conceito Fundamental (7 min)

Um cookie HTTP é um pequeno fragmento de dados que um servidor envia para o navegador do cliente. O navegador, por sua vez, armazena esse dado e o reenvia ao mesmo servidor em todas as requisições subsequentes. Tecnicamente, um cookie consiste em pares chave-valor, como usuario=joao, além de atributos como data de expiração, domínio e escopo. Em produção, cookies são usados para autenticação (lembrar do usuário logado), personalização (armazenar preferências de idioma) e rastreamento (analisar o comportamento do usuário no site). O cookie-parser simplifica o processo de acesso e manipulação desses cookies no lado do servidor em aplicações Node.js/Express, integrando-se perfeitamente com outros middlewares e frameworks. Uma desvantagem dos cookies é a limitação de tamanho (4KB) e a possível exposição a vulnerabilidades de segurança se não forem implementados corretamente.

Implementação Prática (10 min)

// Importando os módulos necessários
const express = require('express');
const cookieParser = require('cookie-parser');

const app = express(); const PORT = process.env.PORT || 3000; // Porta dinâmica ou 3000

// Configurando o cookie-parser. O segredo é usado para assinar os cookies, // aumentando a segurança. Em um ambiente de produção, use uma chave // secreta forte e aleatória. app.use(cookieParser('SUA_CHAVE_SECRETA_AQUI'));

app.get('/set-cookie', (req, res) => { // Configurando um cookie chamado 'meuCookie' com o valor 'chocolate'. // O { maxAge } define o tempo de vida do cookie em milissegundos. // httpOnly: true impede o acesso ao cookie via JavaScript, // protegendo contra Cross-Site Scripting (XSS). // secure: true garante que o cookie só seja enviado via HTTPS. res.cookie('meuCookie', 'chocolate', { maxAge: 900000, httpOnly: true, secure: true }); res.send('Cookie definido!'); });

app.get('/get-cookie', (req, res) => { // Acessando o valor do cookie 'meuCookie' const meuCookie = req.cookies.meuCookie;

if (meuCookie) { res.send(Valor do cookie: ${meuCookie}); } else { res.send('Cookie não encontrado.'); } });

app.listen(PORT, () => { console.log(Servidor rodando na porta ${PORT}); });

npm install express cookie-parser
node index.js // ou nodemon index.js

Exercício Hands-On (5 min)

Crie uma rota /deletar-cookie que remove o cookie meuCookie. Dica: utilize o método res.clearCookie('meuCookie'). Teste acessando a rota /set-cookie para criar o cookie, depois /get-cookie para ver seu valor, e finalmente /deletar-cookie para removê-lo. Verifique se o cookie foi realmente deletado tentando acessá-lo novamente através da rota /get-cookie.

Solução:

app.get('/deletar-cookie', (req, res) => {
  res.clearCookie('meuCookie');
  res.send('Cookie deletado!');
});

Para testar, utilize um client HTTP como Postman ou o próprio navegador para fazer requisições para as rotas. Observe o comportamento dos cookies no seu navegador usando as ferramentas de desenvolvedor. Em caso de erros, verifique o console do seu servidor Node.js e as ferramentas de desenvolvedor do navegador para identificar a causa do problema. Como próximos passos, explore outros atributos de cookies como domain e path para controlar o escopo dos seus cookies e aprofunde-se em conceitos de segurança relacionados à manipulação de cookies em ambientes de produção.

🚀 Pronto para a próxima aula?

Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!

📚 Ver todas as aulas