首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨节点应用共享Redis会话

跨节点应用共享Redis会话
EN

Stack Overflow用户
提问于 2016-08-23 00:03:02
回答 1查看 1K关注 0票数 0

我正忙着搭建一个有3个不同子域的平台-- example.com,auth.example.com和api.example.com。它们运行3个独立的NodeJS应用程序,运行在服务器的不同端口上。

下面是设置会话的代码:

代码语言:javascript
复制
var session = require("express-session");
var redisStore = require("connect-redis")(session);
var redisClient = require("redis").createClient(config.redis);

app.use(session({
        secret: config.server.secret,
        store: new redisStore(config.redis),
        client: redisClient,
        resave: false,
        saveUninitialized: false,
        cookie: {
            domain: "example.co.za",
            httpOnly: false
        }
}));

所有3个应用的配置完全相同,并且它们位于同一服务器上。由于某些原因,会话没有被共享。我似乎记得几个星期前他们被分享了,现在事情已经坏了--我有一个隐秘的怀疑,当我们将所有的流量从HTTP转移到HTTPS时发生了这种情况。这会中断会话吗?我试图关闭“httpOnly”,以防它限制会话,但没有成功。

我已经运行了redid-cli MONITOR,实际上,会话是在登录(Auth App)时保存的,但没有被其他应用程序检索到。当我将saveUninitialized设置为true时,保存的请求来自所有3个应用程序--这表明它们连接到同一个Redis Store。

任何帮助都是最好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-23 00:16:22

我想这只是个小问题。浏览器不会将会话cookie发送回您的子域:您需要一个引导。在域上。例如:

代码语言:javascript
复制
cookie: {
   domain: ".example.co.za",
   httpOnly: false
}

如果这样做不起作用,并且您遇到了AJAX问题,see this post

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39084033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档