asp.net core MVC程序通过AJAX上传文件报“400 Bad Request”

  微软asp.net core上传文件示例中的流式文件上传示例采用AJAX调用控制器函数上传,但是将此部分代码剥离出来运行时,会报下图所示的“400 Bad Request”的错误,一开始还以为是代码剥的有问题,后面直接运行微软示例程序,在流式文件上传页面测试时也是报相同的错误。
在这里插入图片描述
  在火狐浏览器中用开发者工具调试,看到下面的strict-origin-when-cross-origin策略。以为是跨域访问引发的错误。于是按之前《Canvas操作图片像素》和《jQuery调用WebAPI报错“已拦截跨源请求:同源策略禁止读取位于…的远程资源”’》文章中的解决方法分别尝试了配置火狐浏览器的策略及在代码中增加了策略的设置,但是都没有用,上传文件还是报相同的错误。
在这里插入图片描述

	builder.Services.AddCors(options =>
      {
          options.AddPolicy("any", builder =>
          {
              builder.WithMethods("GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS")
              //.AllowCredentials()//指定处理cookie
          .AllowAnyOrigin(); //允许任何来源的主机访问
          });
      });
	...
	...
	app.UseAuthorization();
	app.UseCors("any");
	...
	...

  百度搜索asp.net core和400 Bad Request,找到了参考文献1,其中介绍了返回400的原因有可能是“代码使用了System.ComponentModel.DataAnnotations中的特性”,于是查看控制器中上传文件函数是否使用了什么特性,微软示例中在文件上传函数上添加了 [HttpPost]、[DisableFormValueModelBinding]、[ValidateAntiForgeryToken],后面两个的用法可以百度,本测试项目中就直接去掉了,仅保留了 [HttpPost]。再运行程序,即可顺利上传文件,如下图所示:
在这里插入图片描述

参考文献:
[1]https://blog.csdn.net/jiuzaizuotian2014/article/details/116839401

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值