在创建abp新框架webapi接口项目时,遇到访问post请求接口时,除了谷歌,其他浏览器都报400,控制台日志显示post请求方式不支持,研究配置了半天,发现谷歌可以访问,其他浏览器都不行,后来询问大佬,才知道是由于ABP vnext 访问防伪令牌 验证导致,
查阅相关资料,得出结论是:
这是预防CSRF攻击的一个手段,abp默认是开启的。开启后,前端所有的post请求的header必须带有这个token,请求才能到达对应方法里。默认是除了post,过滤了get等的验证限制
如下,默认代码里是过滤了get等请求方式时,对预防CSRF攻击的验证的
如想关闭此配置,只需要在host工程下面的modules下ConfigureServices方法中插入以下内容
Configure<AbpAntiForgeryOptions>(options =>
{
options.AutoValidateIgnoredHttpMethods.Add("POST");
});
或者直接在host工程下面的modules下ConfigureServices方法中插入下面一句代码,关闭所有的CSRF攻击验证,如下图:Configure<AbpAntiForgeryOptions>(options => { options.AutoValidate = false; });