node.js - node.js csurf 在第一次请求时也是无效的 csrf 令牌
问题描述
我有这种行为,对于我的页面所做的第一个请求,我也会收到 EBADCSRFTOKEN 错误。
据我了解,在第一次请求时,服务器应该只生成 CSRF 令牌,而不是与它获得的令牌进行比较,因为在第一次请求时,客户端还没有令牌。
我只使用 REST API(不渲染任何视图),所以在第一个请求中,我在正文中返回 req.csrfToken()。
我的代码:
const app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use(function (req, res, next) {
// check origin...
....
....
next();
});
app.use(bodyParser.json({limit: '140kb'}));
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
const csrfProtection = csrf({cookie: true}, ignoreMethods: ['HEAD', 'OPTIONS']});
app.use(csrfProtection);
app.use("/app-manager/", routes);
我在上面提到过,在第一个请求中,我在正文中返回 req.csrfToken(),客户端应该在下一个请求中将其发回。
解决方案
推荐阅读
- python - 需要使用 pandas 根据列数据中的月份对数据进行分组
- html - PrimeNG - 如何删除“p-tabview”元素(,
- Angular UI 上动态呈现的元素)?
- javascript - TypeError:无法读取 null、REACTJS 和 Axios 的属性“地图”
- r - Y 轴标签不会使用 ggiraph 正确对齐闪亮
- java - 出于安全原因,从 OpenJDK 8 迁移到 OpenJDK 11
- javascript - 使用 hh:mm:ss 格式引导 datetimepicker
- python-3.x - Python、tkinter 和网格中的滚动条
- html - 铺设
在 CSS 中的一个盒子的顶部 - excel - 需要一个公式来计算并返回结果,但如果单元格为 NA 则留空
- scikit-learn - 仅在特定值之间进行插补