React JS不接受来自express服务器的cookie



我从express服务器(res.cookie()(发送cookie,但这对我的前端不起作用,尽管我在get请求中包含了{withCredentials:true},但它在浏览器中不起作用。浏览器中的应用程序选项卡中没有设置cookie。但是,如果我用poster尝试请求,中间件会完美工作,并显示cookie。我尝试了不同的浏览器和设备,但都没有。cors-config:

app.use(
cors({

credentials: true,
origin: [
"http://localhost:3000", 
],
methods: ["GET", "POST"],
})
);

cookie解析器配置:

app.use(cookieParser())

这是检查用户是否已经登录的get请求:

await axios
.get("http://192.168.0.141:3001/login", { withCredentials: true })
.then(async (response) => {
if (response) {
loggedIn = true
}
})
.catch(async err => {
loggedIn = false
})

jwt的中间件:

const validateToken = (req, res, next) => {
const accessToken = req.cookies["access-token"]
if (!accessToken) { return res.status(400).json({ error: "user not authenticated" }) }
try {
const validToken = jwt.verify(accessToken, "test");
if (validToken) {
req.authenticated = true
return next();
}
} catch (error) {
return res.status(400).json({ error: error });
}
}

如果你需要更多的澄清,请告诉我,谢谢你帮助

您确定没有设置cookie吗?你是怎么查的?响应是否包含Set-Cookie标头?您正在使用哪些cookie参数(安全、相同的网站?(。请记住,浏览器中的cookie保存在设置cookie的域下。如果您要签入开发人员工具的"应用程序"选项卡,则必须在http://192.168.0.141:3001上而不是在http://localhost:3000上打开开发人员工具。在SPA的"应用程序"选项卡中,您不会看到这些cookie,但浏览器应该将它们与任何XHR请求一起发送,因此您应该在"网络"选项卡中的请求的Cookie标头中看到它们。

最新更新