[eggjs/egg]用工程中的config,无法关闭csrf,必须在node_module中关闭。

2025-11-04 368 views
8

想用postman做接口测试,发现提示csrf错误信息,因为是数据服务接口,所以想关闭csrf机制,通过token校验合法性。

工程中的config.default.js 设置csrf:false,错误依旧,下载了egg_cors插件,配置好了错误依旧。

找到node_modules 下的 egg-security →config→config.default.js 找到csrf这个对象下的enable改为false,成功关闭csrf。

回答

7

postman 其实你只要 url header 和 cookie 对得上就行了。

至于关不了,99.99% 的可能性是你配置错了,请提供最小可复现仓库。

2

1、初始化工程 $ egg-init egg-example --type=simple $ cd egg-example $ npm i 2、router中,增加一个post地址 3、用postman随便post数据到这个地址,显示csrf错误 4、config.default.js 关闭csrf校验 exports.security = { csrf: { enable: false, } }; postman提交数据还是显示csrf错误 5、找到node_modules 下的 egg-security →config→config.default.js 找到csrf这个对象下的enable改为false,成功关闭csrf。

0

指的是把你初始化好的可复现仓库提交到你的 github 仓库

8

用的是egg-init的例子,没什么代码和配置。

6

直接上传几分钟就搞定了,不用这样挤牙膏的交流。过去很多情况下,都是以为配置正确了。

4

估计是 config.default.js 配置文件有多个导出。

9

感谢fegmk2的提醒,我确认到问题。 1、之前的eggjs版本("egg": "^2.2.1",)可以这么写:

//关闭表单验证 exports.security = { csrf: false };

经过测试,最新版本("egg": "^2.15.1",)无法生效。

2、改成这个样子,最新版本("egg": "^2.15.1",)生效。

config.security = { csrf: { enable: false, } };

3、应该是版本升级,最新版本无法识别多个导出。

1

@zzzkkk2018 所以一直让你上传你的配置文件啊。

应该是版本升级,最新版本无法识别多个导出。

这个结论是错的,跟 Egg 没什么关系,你应该是对 Node 的 exports / module.exports 理解不够。

我猜测你的 config.default.js 长这样:

// config/config.default.js
module.exports = () => {
  const config = {};

  // 返回的是 config,你写到 exports 上,肯定有问题啦
  exports.security = {};

  return config;
}