【发布时间】:2019-06-28 15:59:02
【问题描述】:
我当前的设置是在 Heroku 上设置的 Node.js 应用程序,它应该像这样使用 Express.js 为我的客户端(一个 React 应用程序)设置一些 cookie。
request.post(authOptions, function(error, response, body) {
if (!error && response.statusCode === 200) {
const access_token = body.access_token,
refresh_token = body.refresh_token;
let options = {
url: 'https://api.spotify.com/v1/me',
headers: { 'Authorization': 'Bearer ' + access_token },
json: true
};
request.get(options, function(error, response, body) {
res.cookie('access_token',access_token, { domain: 'example.com', path: '/', expires: new Date(Date.now() + 9000000), httpOnly: false });
res.cookie('refresh_token',refresh_token,{ domain: 'example.com', path: '/', expires: new Date(Date.now() + 9000000), httpOnly: false });
res.cookie('user',body.display_name,{ domain: 'example.com', path: '/', expires: new Date(Date.now() + 9000000), httpOnly: false });
res.redirect('https://www.example.com/');
});
} else {...}}
它确实设置了 cookie,但仅限于 Heroku 应用程序。我提供的域被完全忽略,当我尝试在客户端读取 cookie 时,这显然会导致错误。有什么建议吗?
编辑:添加完整功能。
【问题讨论】:
-
cookie 将设置在原始请求的域上,并且不会在您可能重定向到的单独域上可用(出于安全原因)。如果您尝试为不同的域设置 cookie 并希望浏览器配置为允许 3rd 方 cookie,则必须设置 3rd 方 cookie。谷歌 3rd 方 cookie 看看它们是什么。
标签: node.js reactjs express heroku cookies