gpt4 book ai didi

node.js - 对 Express 上的某些请求禁用 csrf 验证

转载 作者:IT老高 更新时间:2023-10-28 23:06:55 26 4
gpt4 key购买 nike

我正在使用 Express 框架使用 Node.js 编写一个小型 Web 应用程序。我正在使用 csrf 中间件,但我想为某些请求禁用它。这就是我将它包含在我的应用程序中的方式:

var express = require('express');
var app = express();

app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.cookieSession({secret: 'secret'}));
app.use(express.csrf());

我想设置一个没有 csrf 控件的 POST 路由。

最佳答案

有几种可能的方法。你基本上需要了解什么是最简单最正确的规则来决定是否使用 csrf 中间件。如果您大部分时间都需要 csrf,除了请求模式的小白名单,请遵循 this answer I have about conditional logging middleware 中的示例(为方便起见,复制如下)。

var express = require("express");
var csrf = express.csrf();
var app = express.createServer();

var conditionalCSRF = function (req, res, next) {
//compute needCSRF here as appropriate based on req.path or whatever
if (needCSRF) {
csrf(req, res, next);
} else {
next();
}
}

app.use(conditionalCSRF);
app.listen(3456);

另一种方法可能是仅在特定路径上使用中间件,例如 app.post('/forms/*', express.csrf())。您只想找到一种表达方式,以便在使用或不使用中间件时使其干净。

关于node.js - 对 Express 上的某些请求禁用 csrf 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com