【问题标题】:Axios Get an express session returns undefined, Yet POSTMAN returns the correct dataAxios 获取快速会话返回未定义,但 POSTMAN 返回正确数据
【发布时间】:2020-06-21 19:29:44
【问题描述】:

我在尝试从服务器会话中获取信息时遇到问题。 我有一个登录功能,可以将用户信息放入服务器会话中。

我写了一个测试函数看看它是否有效:

router.post('/userLogged', async(request, response) => {
if (request.session.user === undefined) {
    response.status(401).send('Not Allowed')
    return;
}
response.json(request.session.user);

})

当我使用 POSTMAN 运行此函数时,它运行良好并返回会话数据。

但是当我尝试在客户端使用 Axios 调用它时:

private userLogged = async()=>{
    try{
        const url = 'http://localhost:3000/api';
        const response = await axios.post(`${url}/userLogged`,{withCredentials: true});
        console.log(response)
    }catch(err){
        alert(err.message)
    }
}

我总是得到未定义,我在这里做错了什么?

【问题讨论】:

    标签: reactjs express session axios


    【解决方案1】:

    在此问题 (https://github.com/axios/axios/issues/587) 之后,您似乎可以通过使用 axios 的默认设置来解决此问题。

    否则,有些人还建议确保后端使用 CORS,问题可能会通过以下方式解决:

    这不是 axios 的问题,我只是让它在最新版本上运行,我使用的是 express cors,所以我只是添加了凭据:true,来源:http://yourdomain:3000。这在 localhost 上不起作用,您必须将 localhost 指向某个虚假域并让您的所有应用程序在该域上运行

    【讨论】:

      【解决方案2】:

      postman 不应用 CROS 域检查,不像浏览器

      【讨论】:

      • 好的,但是一旦我添加 withCredentials : true - 我收到以下 CORS 错误:响应中的“Access-Control-Allow-Origin”标头不能是通配符“*”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多