我很困惑,当我将cookie设置为安全时,node.js的csrf功能无法正常工作。
//Load Cooike Parser
app.use(cookieParser(secret));
//Load Session Store
app.use(require('express-session')({
secret:secret,
cookie:{
maxAge: 1000 * 60 * 60 * 24, // 1 day,
secure: true,
httpOnly: true
},
store: sessionStore
}));
//Load POST data parser
//Form sent should be in JSON format
app.use(bodyParser.json());
//Initiate CSRF on middleware
//set the CSRF cookie Header
app.use(csrf());
app.use(function(req,res,next){
res.cookie('XSRF-TOKEN',req.csrfToken());
next();
});
这个设置使用MongoDB来存储会话数据。阅读
express-session
文档时,我发现了这个内容...请注意,secure:true是一个推荐的选项。但是,它需要一个启用https的网站,即安全cookie需要HTTPS支持。如果设置了"secure"并且您通过HTTP访问站点,则不会设置cookie。如果您将node.js放在代理后面并且使用secure:true,则需要在express中设置"trust proxy"。
来源: npm express-session 我目前正在本地运行网站,因此它不是HTTPS。我想知道的是,
secure:true
如何与未通过csrf测试相关联?