【发布时间】:2018-03-18 00:17:37
【问题描述】:
这里可能有误会。
我有一个在 localhost:3000 运行的节点服务器,以及一个在 localhost:8080 运行的 React 应用程序。
React 应用程序正在向节点服务器发出 get 请求 - 我的服务器代码如下所示:
const cookieParser = require('cookie-parser');
const crypto = require('crypto');
const express = require('express');
const app = express();
app.use(cookieParser());
app.get('/', function (req, res) {
let user_token = req.cookies['house_user']; // always empty
if (user_token) {
// if the token exists, great!
} else {
crypto.randomBytes(24, function(err, buffer) {
let token = buffer.toString('hex');
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
res.cookie('house_user', token, {maxAge: 9000000000, httpOnly: true, secure: false });
res.send(token);
});
}
});
app.listen(3000, () => console.log('Example app listening on port 3000!'))
我正在尝试设置house_user 令牌,以便以后可以跟踪来自用户的请求。
但是,没有在用户上设置令牌(来自localhost:8080 的请求)-house_user 令牌始终为空(实际上,req.cookies 完全为空)。我需要做其他事情吗?
【问题讨论】:
-
res.cookie...()是您只需删除res.append()。secure:true将允许 cookie 仅适用于https。请求是否在https上运行? -
@jfriend00 你是对的——我的错;过多筛选 Stack 帖子并尝试多种解决方案 :')