Express jsredirectcookies不发送

我有2个独立的应用程序,让我们称之为login和仪表板。 这两个应用程序都有一个用反应写的UI和一个快速服务器。

在我的login应用程序中,当我通过login用户界面进行POST时,它会login到loginExpress服务器进行身份validation。 一旦通过身份validation,我设置一个cookie并redirect到我的仪表板url:

res.cookie(cookie.key, cookie.access_token, { path: '/', domain: cookie.domain, httpOnly: true, maxAge: cookie.rememberExpiry }) res.redirect(dashboard_url) 

但是,当我在仪表板应用程序中使用req.cookies ,我没有看到任何cookie。

当我从login界面进行POST时,确实看到一个networking调用,说明了响应头:

Set-Cookie: mycookie=cookievalue; Max-Age=28800; Domain=.local.myurl.com; Path=/; Expires=Thu, 03 Nov 2016 19:20:39 GMT; HttpOnly

请注意,截至目前,时间是2016年11月3日11:28 GMT,所以它不是一个到期的问题。

为了testing我编辑了我的hosts文件,使得login.local.myurl.com&dashboard.local.myurl.com指向localhost。

是否有任何理由为什么req.cookies不在仪表板快递应用程序?

我的问题是2倍。

首先,我需要在fetch设置credentials: 'same-origin' ,也就是说,我必须允许Cookie保留在我正在使用的请求库中。

其次,因为我的服务器和我的客户端本质上是分开的,所以服务器上的redirect对客户端没有预期的效果。 因此,我不能只从服务器响应res.redirect 。 相反,我用res.status(200).send()取代了res.redirect行,在我的客户端代码中,我只是做了window.location.replace('http://dashboardurl.com')

希望对未来有这个问题的人有所帮助。