【发布时间】:2020-12-14 10:48:55
【问题描述】:
index.js
if (result) {
console.log("SESSION1: ", req.session)
req.session.token = await createAuth(row[0]["user_id"]);
console.log("SESSION2: ", req.session)
console.log("logged in!", req.session.token)
res.send(true);
return
}
...
app.get("/api/categories", async function(req, res){
console.log("SESSION5: ", req.session)
let token = req.session.token;
console.log("REQUESTING CATEGORIES: ", token)
...
});
第一部分取自我的 /login 并打印出来
SESSION1: Session {
cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: false
}
}
SESSION2: Session {
cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: false
},
token: 'd90b4976-4c12-4605-80e7-770df1e5e33dAT'
}
logged in! d90b4976-4c12-4605-80e7-770df1e5e33dAT
但是,一旦我在反应中提出这样的请求
fetch("http://localhost:8081/api/categories", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Token": 1234,
Accept: "application/json"
}
})
.then(async resp => {
resp = await resp.json()
})
.then(categoriesResp => {
console.log("CATEGORIES: ", categoriesResp)
this.setState({
categories: categoriesResp
})
});
会话令牌未定义,我得到
SESSION5: Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }
}
因此,令牌会话变量不会在此处的请求中持续存在。 我检查了类似的问题并尝试了
- 设置 cookie:{secure: false}
- 确保我的服务器没有重新启动 然而,这些事情都没有任何影响,并且产生了同样的问题。 关于如何解决此问题的任何想法?
【问题讨论】:
-
我不熟悉 Express JS,但我在使用 React Axios 和 Django & Django Rest Framework 的项目中遇到了类似的问题。我刚刚浏览了 fetch API,我发现你必须添加 fetch('example.com:1234/users', { credentials: 'include' }) 并且在快递方面,我猜你必须进行与 CORS 相关的更改。下面的文章可能会有所帮助。 medium.com/zero-equals-false/using-cors-in-express-cac7e29b005b 转到文章中的 HTTP Sessions Over CORS 部分。
-
@AasayAmballi 尝试过这样做并没有改变任何东西,不过谢谢。
标签: node.js reactjs express session