Cookies Next.js不是持久化cookie
我有一个服务器端呈现的Next.js/express应用程序,它与Django API(跨源)通信。我像这样登录用户:Cookies Next.js不是持久化cookie,cookies,next.js,Cookies,Next.js,我有一个服务器端呈现的Next.js/express应用程序,它与Django API(跨源)通信。我像这样登录用户: const response = await fetch('localhost:8000/sign-in', { method: 'POST', credentials: 'include', body: JSON.stringify({ email, password }),
const response = await fetch('localhost:8000/sign-in', {
method: 'POST',
credentials: 'include',
body: JSON.stringify({ email, password }),
headers: { 'Content-Type': 'application/json' },
});
const result = await response.json();
if (response.status === 200) {
Router.push('/account');
}
Django成功登录用户并返回csrftoken
和sessionid
cookie的set cookie
头,但是,当我导航到另一个页面时(就像上面代码中我Router.push
时),cookie不会持久
我假设这与服务器端和客户端有关,但当浏览器中设置cookie时,我希望它们无论如何都会保持不变
一旦设置好这些cookie,如何让它们在客户端的所有页面上持久化?事实证明,
set cookie
是一种老方法。它是由浏览器控制的,所以它是模糊的
最后,我将csrftoken
和sessionid
发送回JSON正文中的客户端,并使用localStorage.setItem('sessionid','theSessionId')
和localStorage.setItem('csrftoken','theCsrftoken')将它们保存到localStorage
然后,当我需要发出经过身份验证的请求时,我会将它们包含在获取头中:
const response = await fetch(`${API_HOST}/logout`, {
method: 'POST',
headers: {
'X-CSRFToken': localStorage.getItem('csrftoken'),
sessionid: localStorage.getItem('sessionid'),
},
});