【发布时间】:2016-10-13 06:20:28
【问题描述】:
我有一个在后端使用节点并在前端做出反应(带有哈希历史)的应用程序。
这意味着我的 api 端点 URL 看起来像:https://example.com/api/login
而我的反应端点都是来自根的片段:https://example.com/#/somePage
在(通过 OAuth2)用户登录后,我想将用户重定向到 React SPA 中的特定 URL 片段。
我这样做的第一个想法是让服务器将我重定向到 URL 片段。
我的路由处理程序看起来像:
app.get('/oauthCallback', (req, res) => {
req.session.token = 'some token'
redirect('/#/someLoggedInPage')
}
在 Safari 中,这可以正常工作,并且从 SPA 发出的任何进一步的 API 请求都共享相同的 req.session,因此具有令牌并且可以发出经过身份验证的下游请求。
但是,在 Chrome 中,下一个 API 请求在重定向时会导致创建新会话,从而丢失令牌并阻止经过身份验证的请求成功。
重定向到另一个 api 端点(不在 SPA 中)时一切正常。
如果我重定向到 SPA 的根目录 /,它也不起作用。
我想知道关于 chrome 如何处理 URL 片段和会话,是否有什么我不知道的地方。
【问题讨论】:
标签: node.js google-chrome express reactjs react-router