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吗?
实际问题是缺少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'});