如何在服务端使用NextResponse设置Cookie?
直接修改你的代码即可实现Cookie设置,核心是先创建NextResponse实例,再通过cookies.set()方法配置Cookie参数:
import { NextResponse } from 'next/server'; import jwt from 'jsonwebtoken'; import { config } from '@/config/config'; const GET = async () => { const expiration = Math.floor(Date.now() / 1000) + 300; // 5分钟后(秒级时间戳) const token = jwt.sign({ exp: expiration }, config.JWT_SECRET); // 创建响应对象 const response = NextResponse.json({ token }); // 设置Cookie response.cookies.set({ name: 'authToken', // Cookie名称 value: token, // 存储的JWT值 expires: new Date(expiration * 1000), // 转换为毫秒级时间戳设置过期时间 httpOnly: true, // 禁止前端JS访问,防范XSS攻击 secure: process.env.NODE_ENV === 'production', // 生产环境仅HTTPS传输 sameSite: 'strict', // 防范CSRF攻击 path: '/' // 全站路径生效 }); return response; }; export { GET };
关键参数说明
httpOnly: true:这是存储JWT的核心安全配置,避免Cookie被前端脚本窃取,大幅降低XSS风险secure:生产环境强制开启,确保Cookie仅通过HTTPS传输,防止明文泄露sameSite: 'strict':限制Cookie仅在同站点请求中发送,有效阻断跨站请求伪造(CSRF)expires:需将秒级时间戳转换为毫秒,因为Date构造函数接收毫秒值
如果需要设置多个Cookie,可多次调用response.cookies.set()方法,传入不同的配置对象即可。
内容的提问来源于stack exchange,提问作者Shivam Sahil
相关产品推荐
相关产品推荐

