我正在构建一个带有单独的后端快速api的反应式Web应用程序,它管理所有的呼叫,包括通行和设置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上都尝试过,如果它有所作为,我会在react.com上使用axios来处理请求。
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不存在。
感谢任何帮助
答案 0 :(得分:0)
据我了解您的问题,我认为您不会考虑将Cookie设置为主机名。
所以在第一种情况下,主机名是相同的,没关系,但在第二种情况下,浏览器的cookie没有为react.com设置
因此,尝试在react.com上设置cookie应该可以正常工作。
我会用评论要求澄清,但我还没有足够的声誉。