Next.js中间件未接收来自子域API的Cookie

laawzig2  于 2023-03-29  发布在  其他
关注(0)|答案(1)|浏览(143)

我在https://api.example.com上运行API服务,将Next.js应用程序部署到Vercel并绑定到https://example.com
并且还具有检查受保护路径的中间件。

export function middleware(request: NextRequest) {
  const isAuthenticated =
    !!request.cookies.get('Authentication') || !!request.cookies.get('Refresh');
  ...
  ...
  return NextResponse.next();
}

localhost:4000(Server)上运行localhost:3000(Client)时,这可以很好地工作,但在生产环境中却不行。当我登录时,我在浏览器中获得了所有必要的cookie。所以我的API为客户端正确设置了cookie。由于某种原因,Next.js拒绝将其传递给中间件。
我在cookie中设置了HttpOnly; SameSite=None; Secure;属性,我也尝试设置SameSite=Strict,但不起作用。
如何将cookie传递到生产环境中的中间件?

vd8tlhqk

vd8tlhqk1#

所以我向ChatGPT提出了同样的问题,结果发现在后端设置cookie时需要显式定义domain属性。如果没有显式定义domain属性,它会将服务器源设置为专用于客户端的cookie。因此,cookie不会随请求一起发送,Next.Js无法解析它们。
向ChatGPT致敬!

相关问题