微软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
原文地址:https://blog.csdn.net/gc_2299/article/details/125646074
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_26508.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!