You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在服务端使用NextResponse设置Cookie?

在Next.js服务端使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:05:00