我有两个独立的应用程序,我们称之为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应用程序中不可用?
答案 0 :(得分:1)
我的问题是2折。
首先,我需要在credentials: 'same-origin'
上设置fetch
,也就是说我必须允许Cookie在我正在使用的请求库中保留。
其次,因为我的服务器和我的客户端基本上是分开的,所以服务器上的重定向对客户端没有预期的效果。因此,我不能只从服务器响应中res.redirect
。相反,我将res.redirect
行替换为res.status(200).send()
,在我的客户端代码中,我只是window.location.replace('http://dashboardurl.com')
。
希望能帮助将来遇到此问题的任何人。