httpOnly cookie 未随 getInitialProps [Next.js] 的请求一起发送

Ank*_*ari 1 express reactjs next.js

我正在从服务器设置一个httpOnlycookie (jwtToken),它正在前端设置。我可以在 devTools 中看到 cookie。

现在,如果我使用以下代码从 getInitalProps 向服务器发出请求,

  const data = await fetch(`${process.env.API_URL}/me`, {
    credentials: 'include',
  }).then((res) => res.json());
Run Code Online (Sandbox Code Playgroud)

cookiejwtToken不随请求一起发送。

我也尝试这样做

  const data = await fetch(`${process.env.API_URL}/me`, {
    credentials: 'include',
    headers: {
      cookie:  context.req.headers.cookie
    },
  }).then((res) => res.json());
Run Code Online (Sandbox Code Playgroud)

但这并没有那么有效。

但是,当我提出相同的请求时,useEffect 它工作得很好。任何人都可以帮我将其发送jwtToken到服务器getInitialProps吗?

Ank*_*ari 8

实际问题是缺少jwtToken来自 的 cookie context.req.headers.cookie。它可以在本地主机上运行,​​但不能在生产环境中运行。

此问题的解决方案是domain在您的 cookie 上设置 。因此,如果前端已打开example.com并且 API 服务器已打开,api.exmaple.com则将域设置为.example.com可以解决此问题。

res.cookie('jwtToken', token, { httpOnly: true, domain: '.example.com'});