【问题标题】:Cookies not sent on redirect未在重定向时发送 Cookie
【发布时间】:2018-09-13 13:27:38
【问题描述】:

我正在使用一个单独的后端 express api 构建一个 react web 应用程序,该 API 管理所有调用,包括通行证和设置 cookie。我们称后端服务为“api.com”,前端服务为“react.com”。我正在使用现有提供商 (spotify) 的通行证,授权成功后,会在 api.com 上设置一个 cookie。这个想法是用户与 react.com 交互,并通过代理向 api.com 发出请求。

如果我只是在浏览器中进行测试并调用 api.com/resource,则会自动设置 cookie。我知道这一点是因为我添加了一些日志记录,还因为需要授权的请求通过 cookie 成功。

但是,当我通过代理从 react.com 调用 api.com 时,未设置 cookie。这是代理时的预期行为吗?当我直接调用 api.com 时设置了 cookie 似乎很奇怪,但在重定向时却没有设置。有没有解决的办法?我的想法是将 cookie 从 api.com 传送到 react.com,将其保存在那里,然后在所有后续请求中发送,但这似乎有点过头了。我还想知道是否应该在 react.com 而不是 api.com 上设置 cookie。

我在 Firefox 和 Chrome 中都试过了,如果有什么不同,我会使用 axios 来处理 react.com 上的请求。

const request = axios({
  method:'get',
  url:'/api/resource'
});

使用 express-http-proxy 进行如下代理(仍在 react.com 上):

app.use('/', proxy('api.com', {
  filter: (req) => {
    return (req.path.indexOf('/api') === 0);
  }
}));

但是一旦访问 api.com,任何身份验证都会失败,因为 cookie 不存在。

感谢任何帮助

【问题讨论】:

    标签: node.js reactjs cookies proxy passport.js


    【解决方案1】:

    据我了解您的问题,我认为您没有考虑将 cookie 设置为主机名。

    所以在第一种情况下,主机名相同并且没问题,但在第二种情况下,浏览器的 cookie 没有为 react.com 设置

    所以尝试在 react.com 上设置 cookie 应该可以。

    我会通过评论要求澄清,但我还没有足够的声誉。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-15
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2018-02-02
      • 2015-10-06
      • 1970-01-01
      相关资源
      最近更新 更多