Javascript ExpressJS客户端会话不';无法保存会话

Javascript ExpressJS客户端会话不';无法保存会话,javascript,node.js,session,express,Javascript,Node.js,Session,Express,我想在Express后端使用模块。因此,我安装了该模块,并将其设置为与Express一起使用,如下所示: var sessions = require('client-sessions'); app.use(sessions({ cookieName: Constants.CLIENT_SESSION_NAME, // pi_client_session secret: Constants.CLIENT_SESSION_SECRET, // some long stri

我想在Express后端使用模块。因此,我安装了该模块,并将其设置为与Express一起使用,如下所示:

var sessions      = require('client-sessions');
app.use(sessions({
    cookieName: Constants.CLIENT_SESSION_NAME, // pi_client_session
    secret: Constants.CLIENT_SESSION_SECRET, // some long string here
    duration: Constants.CLIENT_SESSION_LIFETIME // 24 * 60 * 60 * 1000;
}));
但是,出于某种原因,每次请求都是空的。下面是一个例子:

router.get('/auth', function(req, res, next) {
    console.log("CLIENT SESSION BEFORE: " + JSON.stringify(req[Constants.CLIENT_SESSION_NAME]));
    req[Constants.CLIENT_SESSION_NAME].test = "saved";
    console.log("CLIENT SESSION AFTER: " + JSON.stringify(req[Constants.CLIENT_SESSION_NAME]));
    return res.json({ sessionSaved: true});
}
这是我每次得到的输出:

CLIENT SESSION BEFORE: {}
CLIENT SESSION AFTER: {"test":"saved"}
我试过谷歌浏览器,Opera。同样的结果

我的设置如下:ReactJS应用程序代理从localhost:3000到localhost:3001,这是我的express后端。 我试着直接向邮递员提出请求,这样就可以正常地节省时间。所以问题肯定是从react到express再到back的代理。 react端的package.json文件如下(我没有包含依赖项):


所以问题是,如何使用这样的代理获取客户端会话

因为您的React应用程序运行在与后端不同的来源上,所以您需要明确告诉
fetch
在每个请求中传递凭据(如cookies):

fetch('http://your-backend', {
  credentials: 'include'  
}).then(...)

您确定客户端请求正确地传递了凭据吗?您应该检查a)客户端是否收到会话cookie,b)客户端是否在后续请求中发送该cookie。另外,请看这里:我忘了提到,我使用的是fetch(),而不是XMLHttpRequest。但感谢您将我指向关键字凭据:)。我会尝试用同样的方法检查它,只是有点不同:哇!非常感谢你为我指明了正确的方向!我已将{credentials:'include'}添加到我的fetch()参数中,现在一切正常:)您可以在此处键入您的答复作为答案,我将接受它
fetch('http://your-backend', {
  credentials: 'include'  
}).then(...)