【发布时间】:2019-03-30 04:31:58
【问题描述】:
我在 nodeJs 中有一条看起来像这样的路由
app.get("/", (req, res) => {
console.log(req.user)
res.json(req.user)
})
这里的console.log显示未定义但如果我访问地址(localhost:3000/)
它显示以下数据(以 json 格式)
// 20181025193337
// http://localhost:3000/
{
"isFormFilled": false,
"_id": "5bd1a3d82101d36407f81218",
"username": "Rohit Bhatia",
"userId": "102775073203963169965",
"image": "https://lh5.googleusercontent.com/-7HxFRQOCd9Q/AAAAAAAAAAI/AAAAAAAAAU8/pgzBQd9X6pA/photo.jpg?sz=250",
"__v": 0
}
与我的 react 应用程序类似,我发出 axios 请求,其中 response.data 未定义(或“”)
componentWillMount() {
axios.get("http://localhost:3000/").then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
}
如果我在我的路线中做这样的事情
app.get("/", (req, res) => {
console.log(req.user)
res.json("here)
})
我的axios 请求中的数据显示为"Here"
[问题:] 为什么会发生这种情况,或者我在这里做错了什么?
Ps:由于我在本地提出请求,我已启用 crocs 资源共享
【问题讨论】:
-
在本地发出请求并不意味着允许CORS。
-
不,我的意思是我使用插件来允许跨源请求。未定义数据的原因和答案是因为 req.user cookie 在我执行 axios 请求时没有请求,但在我直接转到 localhost:3000 时存在
-
您的问题不完整。我建议您过去整个服务器文件代码,而不仅仅是 app.get。检查您给我的存储库 (github.com/irohitb/goodED) 我看到这是一个与护照身份验证中间件相关的问题。 Passport 将用户属性添加到请求对象。因为在您的 axios 请求中,您没有提供任何允许护照创建用户(如 cookie 或身份验证标头)的内容,所以它返回未定义。
-
@croraf 我意识到发布这个问题并且由于已经有答案,我无法删除/删除这个问题
标签: javascript express passport.js axios