我试图用Node.js设置cookie并表达,但是当我检入chrome dev工具时,没有cookie。我显然做错了事,但不确定。
在我的 loginController.js 中,
exports.postLogin = async (req, res) => {
const { email, password } = req.body;
const user = await authenticate(email, password);
if (!user) return res.status(403).send("Invalid email or password");
const userData = {
name: user.name,
email: user.email,
type: AUTH_USER_TYPE
};
res.cookie("token", userData, { httpOnly: true, signed: true });
res.json(userData);
};
在 app.js 中,我有:
const cookieParser = require("cookie-parser");
app.use(cookieParser(process.env.COOKIE_SECRET));
答案 0 :(得分:0)
您需要定义httpOnly: false
,例如:
res.cookie("token", userData, { maxAge: 1000 * 60 * 10, httpOnly: false });
在客户端,您需要发送withCredentials: true
的请求
$http({
method: 'POST',
url: 'url,
withCredentials: true,
data : {}
}).then(function(response){
//response
}, function (response) {
//response
});
注意:httpOnly : false
将无法通过浏览器中的document.cookie进行访问。它仍将与HTTP请求一起发送,如果您检查浏览器的开发工具,则很可能会在开发工具的“资源”标签中找到Chrome中的cookie。