gpt4 book ai didi

javascript - ExpressJS 客户端 session 不保存 session

转载 作者:行者123 更新时间:2023-12-03 03:58:23 26 4
gpt4 key购买 nike

我想使用client-sessions模块与我的 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"}

我已经尝试过 Google Chrome、Opera。结果相同。

我的设置是这样的:ReactJS 应用程序代理从 localhost:3000 到 localhost:3001,这是我的 Express 后端。我尝试过用Postman直接请求表达,并且它正常保存了 session 。所以问题肯定出在从react到express再到代理的代理上。我在 React 端的 package.json 文件如下(我没有包含依赖项):

"scripts": {
"build-css": "node-sass-chokidar src/ -o src/",
"watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive",
"start-js": "react-scripts start",
"start": "npm-run-all -p watch-css start-js",
"build": "npm run build-css && react-scripts build",
"eject": "react-scripts eject"
},
"proxy": "http://localhost:3001"

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

最佳答案

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

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

关于javascript - ExpressJS 客户端 session 不保存 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44838860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com