【发布时间】:2013-09-15 22:38:46
【问题描述】:
我有两个 node.js (express) 应用程序在两个不同的端口上运行。一个在localhost:3000 上运行,另一个在localhost:4000 上运行。端口3000 上的应用具有以下cookie 配置:
app.use(express.cookieParser())
app.use(express.session({
key: settings.session.key,
secret: settings.session.secret,
cookie: settings.session.cookie,
fingerprint: function () { return '' },
store: new MemoryStore()
}))
另一个应用程序(在端口 4000 上)具有:
app.use(express.cookieParser())
app.use(express.session({
key: settings.session.key,
secret: settings.session.secret,
cookie: settings.session.cookie,
fingerprint: function() { return '' },
store: new MongoSessionStore({ db: db })
}))
它们都使用相同的会话配置对象(唯一的区别是一个存储在 MongoDB 中,而另一个存储在内存中。
我在localhost:3000上设置了这样的cookie:
res.cookie('mycookie', 'bar', { domain: 'localhost:4000' })
然后我 POST(使用 jquery.ajax)到 localhost:4000 上的路由,并且 cookie mycookie 不存在。
注意:我在 localhost:4000 上设置了 CORS 以接受来源 localhost:3000,当我使用 Jquery 发布时,我使用 xhrFields: { withCredentials: true }。
所以我的问题是,如何正确配置应用程序以相互设置 cookie? :)
【问题讨论】:
-
如果您对两个站点使用相同的 mongo 会话存储会怎样?
-
@JoshC。它会导致两个应用程序之间共享会话。
标签: javascript node.js cookies express