如何使用Express在端口/域之间共享cookie
我有两个node.js(express)应用程序运行在两个不同的端口上。 一个在localhost:3000
上运行,另一个在localhost:4000
运行。 端口3000
上的应用程序具有以下cookieconfiguration:
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 }) }))
他们都使用相同的会话configuration对象(唯一不同的是一个正在存储在MongoDB中,而另一个是在内存中。
我设置了一个类似于localhost:3000
的cookie:
res.cookie('mycookie', 'bar', { domain: 'localhost:4000' })
然后我POST(与jquery.ajax)到localhost:4000
上的路由,而cookie mycookie
不存在。
注意:我在localhost:4000
上安装了CORS设置,以接受origin localhost:3000
,当我用xhrFields: { withCredentials: true }
发布时,我使用xhrFields: { withCredentials: true }
。
所以我的问题是,如何正确地configuration应用程序设置cookie到另一个? 🙂
我build议你在两个应用程序之间共享你的会话存储。
编辑:只是为了澄清你不能从一个域设置cookie到另一个域。 所以domainA不能为domainB设置一个cookie – 你必须得到domainB来设置cookie(例如通过访问domainB )。 使用您当前的configuration,您应该能够按预期阅读cookie。
最初,我以为你想通过cookie分享两个应用程序之间的状态,这就是为什么我build议在应用程序之间共享会话存储。