我已经在express / node.js中创建了一个cookie
var express = require('express');
var cookieParser = require('cookie-parser')
var app = express();
app.use(cookieParser())
app.use(function (req, res, next) {
// check if client sent cookie
var cookie = req.cookies.mainCookie;
if (cookie === undefined){
// no: set a new cookie
var randomNumber=Math.random().toString();
randomNumber=randomNumber.substring(2,randomNumber.length);
res.cookie('cookieName',randomNumber, {
maxAge: 60 * 60 * 24
httpOnly: true
});
console.log('cookie created successfully', randomNumber);
} else {
// yes, cookie was already present
console.log('cookie exists', cookie);
}
next();
});
然后,我可以像req.cookie
一样访问此cookie,但不能在前端进行document.cookie
。
我想在前端(JavaScript)中访问它吗?
答案 0 :(得分:1)
设置时:
httpOnly: true
在cookie上,您告诉浏览器不允许浏览器Javascript访问cookie,该cookie只应存储在本地并根据需要发送到服务器。
如果您希望浏览器Javascript具有访问权限,请更改为:
httpOnly: false
我想在前端(JavaScript)中访问它吗?
是的,有可能。不要设置httpOnly: true
。
如果您想阅读有关此内容的信息,可以阅读MDN page on cookies上的内容:
为防止跨站点脚本(XSS)攻击,JavaScript的Document.cookie API无法访问HttpOnly cookie;它们仅发送到服务器。例如,持久化服务器端会话的cookie不需要对JavaScript可用,而应设置HttpOnly标志。