tez*_*tez 5 javascript cookies node.js express
我有两个 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()
}))
Run Code Online (Sandbox Code Playgroud)
另一个应用程序(在端口上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 })
}))
Run Code Online (Sandbox Code Playgroud)
它们都使用相同的会话配置对象(唯一的区别是一个存储在 MongoDB 中,而另一个存储在内存中。
我像这样设置了一个cookie localhost:3000
:
res.cookie('mycookie', 'bar', { domain: 'localhost:4000' })
Run Code Online (Sandbox Code Playgroud)
然后我 POST(使用 jquery.ajax)到 上的路由localhost:4000
,并且 cookiemycookie
不存在。
注意:我设置了 CORSlocalhost:4000
以接受 origin localhost:3000
,当我使用 Jquery 发布时,我使用xhrFields: { withCredentials: true }
.
所以我的问题是,如何正确配置应用程序以相互设置 cookie?:)
我建议您在两个应用程序之间共享会话存储。
编辑:只是为了澄清您不能将 cookie 从一个域设置到另一个域。因此,domainA无法为domainB设置cookie - 您必须让domainB设置cookie(例如,通过访问domainB)。使用您当前的配置,您应该能够按预期读取 cookie。
最初,我认为您想通过 cookie 在两个应用程序之间共享状态,这就是为什么我建议在应用程序之间共享会话存储。
归档时间: |
|
查看次数: |
5435 次 |
最近记录: |