记录一次通过aspnetboilerplate站点常见的abp框架,访问application层设定的既定接口,get能够访问,post访问失败报400

 

1    public IServiceProvider ConfigureServices(IServiceCollection services)
2    {
3        services.AddControllersWithViews(options =>
4        {
5            options.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute());
6        });
7     }

在创建代码中使用了AbpAutoValidateAntiforgeryTokenAttribute这个过滤头属性,会对

string method = context.HttpContext.Request.Method;

if (string.Equals("GET", method, StringComparison.OrdinalIgnoreCase) || string.Equals("HEAD", method, StringComparison.OrdinalIgnoreCase) || string.Equals("TRACE", method, StringComparison.OrdinalIgnoreCase) || string.Equals("OPTIONS", method, StringComparison.OrdinalIgnoreCase))

这些请求以外的方式进行网络请求验证,是因为使用了微软的ASP.NET Core Web程序中使用Antiforgery防御CSRF,(跨站点请求伪造(又名CSRF或XSRF)是最常见的攻击之一)

该功能是可选项,以下方式是避免此功能。

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 {
     //不适用ABP自身的X-XSRF-TOKEN验证,如果去掉,会导致前端请求只有get请求能通过,或者携带令牌可通过,其他的方式验证失败。
     app.UseAbp(options => { options.UseAbpRequestLocalization = false; });
           
 }

 

posted @ 2024-03-27 14:27  隨興∥隨心  阅读(5)  评论(0编辑  收藏  举报