我在前端使用React(我是react的新手),后端我使用express.js,并使用express-session进行身份验证(实际上尝试了jwt,但在服务器上设置token,如res.cookie(),它不起作用)。所以我想要的是当用户正确登录服务器设置一个cookie,然后如果你想得到你的用户数据,通过检查你的会话ID给予你的用户数据。我写了我的后端代码,并尝试从 Postman 和它的工作。但是当我在React尝试这样做的时候,它没有起作用。我尝试了很多东西使用axios,使用fetch request。当react post在客户端登录时,在响应头中显示我的Set Cookie和我的cookie:x1c 0d1x如果我知道正确,它设置了cookie,我们可以在请求头中看到它,但我的请求头没有:
的
我的应用程序> cookie页面是空的。但是当用户正确登录时,它正确地完成了工作并向我们显示用户名,但是当我们重定向他并想要获取用户数据时,它将cookie设置为默认值:
客户端代码:
const [data, setData] = useState({
username: '',
password: '',
})
const loginUser = async (e) => {
e.preventDefault()
const { username, password } = data
try {
fetch("http://localhost:3001/login", {
credentials: 'same-origin',
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({username, password}),
})
.then(json => json.json())
.then(response => console.log(response))
} catch (error) {
console.log(error)
}
}
字符串
那我该怎么办?
1条答案
按热度按时间cczfrluj1#
我认为你没有通过 * 证书:获取请求中的'same-origin'*。你需要使用像这样的获取请求来包含头中的cookie
字符串
这可能对你有帮助。请让我知道问题是否解决。如果你分享你的代码,你是如何使用fetch来发出请求的,那会更好。