【发布时间】:2022-02-03 22:46:29
【问题描述】:
我正在从快速服务器 (res.cookie()) 发送 cookie,但这不适用于我的前端,即使我在获取请求中包含 {withCredentials:true},但它在浏览器中不起作用,没有 cookie在浏览器的应用程序选项卡中设置。
但是,如果我尝试使用邮递员的请求,中间件可以完美运行并显示 cookie。
我尝试了不同的浏览器和不同的设备,但没有。
cors 配置:
app.use(
cors({
credentials: true,
origin: [
"http://localhost:3000",
],
methods: ["GET", "POST"],
})
);
cookie 解析器配置:
app.use(cookieParser())
这是检查用户是否已经登录的获取请求:
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 });
}
}
如果您需要更多说明,请告诉我,谢谢您的帮助
【问题讨论】:
-
你不是从 nodejs/server 端执行 axios 部分,是吗?
-
axios 来自前端,而后端有一个 app.post 和 app.get ,
-
问题是使用邮递员的请求可以完美运行并返回一个jwt令牌但是执行来自前端的请求不起作用,只是没有cookie返回到前端
标签: javascript express cookies axios jwt