Nodejs session的问题,两个接口共享session的信息,如图
Nodejs session的问题,两个接口共享session的信息,如图
https://ws1.sinaimg.cn/large/005B3bwGgy1fx7g0aesoyj30jm0g1jsv.jpg
https://ws1.sinaimg.cn/large/005B3bwGgy1fx7g0m81clj30g806kt9o.jpg
有 login 和 test 两个接口,使用 postman 先请求 login 登录成功后在请求 test 可以读取到同一个 session,但是在网页上使用两个按钮分别绑定请求 login 和 test 时,点击 login 登录成功后再点击 test 按钮时读取到的 session 就是空的了,大神们,求指教
1
cookie 跨域导致的 不要用 session 换另一种方法
用啥呀,哈哈
刚试了一下,好像并不能解决
用 cors 这个 module 就行了
在Node.js中共享session信息通常涉及使用某种session存储机制,比如内存存储、Redis、MongoDB等。下面我将展示如何使用express-session
中间件和Redis来共享session信息。
首先,确保你已经安装了必要的包:
npm install express express-session redis
然后,你可以设置你的Express服务器来使用Redis作为session存储:
const express = require('express');
const session = require('express-session');
const RedisStore = require('connect-redis')(session);
const redis = require('redis');
const client = redis.createClient();
const app = express();
app.use(session({
store: new RedisStore({ client }),
secret: 'your_secret_key',
resave: false,
saveUninitialized: false,
cookie: { secure: false } // 注意:在生产环境中应设置为true,并使用HTTPS
}));
app.get('/api/endpoint1', (req, res) => {
if (req.session.views) {
req.session.views++;
res.send(`You have visited this page ${req.session.views} times`);
} else {
req.session.views = 1;
res.send('Welcome to the session demo. Refresh!');
}
});
app.get('/api/endpoint2', (req, res) => {
res.send(`Session views: ${req.session.views}`);
});
app.listen(3000, () => console.log('Server running on port 3000'));
在这个例子中,/api/endpoint1
和/api/endpoint2
两个接口共享同一个session信息,存储在Redis中。你可以通过访问这两个接口来验证session是否共享。