主题
Cookie
Cookie 由浏览器随匹配请求发送。res.cookie() 用于设置 Cookie;读取原始 Cookie 可使用 req.headers.cookie,需要解析为对象时使用 cookie-parser。
bash
pnpm add cookie-parserjs
import cookieParser from 'cookie-parser'
app.use(cookieParser())
app.post('/login', (req, res) => {
res.cookie('session', 'opaque-session-id', {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'lax',
maxAge: 1000 * 60 * 60 * 24,
path: '/',
})
res.sendStatus(204)
})
app.get('/profile', (req, res) => {
res.json({ session: req.cookies.session })
})
app.post('/logout', (req, res) => {
res.clearCookie('session', { path: '/' })
res.sendStatus(204)
})httpOnly 防止 JavaScript 读取 Cookie,secure 限制仅 HTTPS 发送,sameSite 降低跨站请求携带 Cookie 的风险。清除 Cookie 时,path、domain、sameSite 等属性应与设置时保持一致。
