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

Next.js 13.4路由处理器Cookies()函数开发可用生产失效

Next.js 13 生产环境路由处理器无法获取Cookie问题

我使用Next.js 13.4前端,搭配基于Doorkeeper、通过HTTP-Only Cookie认证的Rails 7纯API后端。开发环境下(前端localhost:3000,后端localhost:3001),Next.js的cookies()函数或Request对象的req.cookies()能正常获取浏览器中的access_token Cookie,并传递给Rails API请求。但在生产环境中,Next.js部署在Netlify,后端部署在Heroku(跨域),这两个方法都返回空对象——尽管通过浏览器开发者工具能看到access_token已正确存储。生产环境下Cookie设置为Secure、sameSite=None、HttpOnly,且双方都通过HTTPS通信,理论上支持跨域共享。

代码流程说明

提交更新表单时,客户端组件会向PUT路由处理器发起fetch请求,已添加credentials: 'include'配置:

客户端组件代码(form.component.tsx)

// handlers
const submitHandler: SubmitHandler<ProductFormData> = async (
  formData: ProductFormData
) => {
  setLoading(true);

  // 格式化表单数据用于请求
  const encodedData = encodeProductFormData(formData, defaultImage, images);

  try {
    // 更新逻辑
    if (product) { 
      const response = await fetch(`/api/products/${ product.slug }`, {
        credentials: 'include',
        method: 'PUT',
        body: encodedData
      });
    } else { 
      // 创建逻辑
      const response = await fetch('/api/products', {
        credentials: 'include',
        method: 'POST',
        body: encodedData
      });
    }

    router.push('/');
  } catch (error) {
    setLoading(false);
    console.error('请求出错:', error);
  }
};

路由处理器代码(/api/products/[slug]/route.ts)

export const PUT = async (
  request: NextRequest,
  { params }: { params: { slug: string } } 
) => {
  // 从Cookie中提取Doorkeeper认证令牌
  const token = request.cookies.get('access_token');

  // 获取路由参数中的slug
  const slug = params.slug;

  // 获取请求中的表单数据
  const formData = await request.formData();

  // 调用后端更新接口
  const product = await updateProduct(slug, formData, token);

  // 构造响应
  const response = NextResponse.json(
    { product: product },
    { status: 200 }
  );

  // 刷新数据与路由缓存
  revalidatePath('/');

  return response;
};

如果直接从表单调用Rails后端,Cookie可以正常发送,但无法调用revalidatePath刷新缓存,导致前端内容无法更新。

请问:是什么原因导致Cookie无法传递到路由处理器?


内容的提问来源于stack exchange,提问作者baconsocrispy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:53:16