Express js重定向cookie未发送

时间:2016-11-03 11:32:23

标签: node.js express cookies

我有两个独立的应用程序,我们称之为Login&仪表板。这两个应用程序都有一个用react和一个快速服务器编写的UI。

在我的登录应用程序中,当我从登录UI进行POST时,它会命中Login Express服务器进行身份验证。经过身份验证后,我设置了一个Cookie并重定向到我的信息中心网址:

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

res.redirect(dashboard_url)

但是,当我在仪表板应用中使用req.cookies时,我看不到任何Cookie。

当我从登录界面进行POST时,我确实看到一个网络呼叫,说明响应标题:

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,因此不是到期问题。

要测试我已经编辑了我的主机文件,以便登录.local.myurl.com& dashboard.local.myurl.com指向localhost。

为什么req.cookies在Dashboard express应用程序中不可用?

1 个答案:

答案 0 :(得分:1)

我的问题是2折。

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

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

希望能帮助将来遇到此问题的任何人。