当前位置:  开发笔记 > 后端 > 正文

ASP.NET Core:为什么在POST请求期间我们为什么必须使用FromBodyAttribute从JSON负载中混合参数?

如何解决《ASP.NETCore:为什么在POST请求期间我们为什么必须使用FromBodyAttribute从JSON负载中混合参数?》经验,为你挑选了1个好方法。

在将现有的Web API 2应用程序移植到ASP.NET Core时,我注意到现在需要将应用于FromBodyAttribute操作方法的参数(带有JSON有效负载的POST请求):

[HttpPost]
public IActionResult([FromBody]MyComplexType parameter){ ... }

我尝试搜索文档,但没有找到任何能解释此决定背后原因的信息。我确实找到了一条帖子,指出这样做是为了提高安全性(CSRF方案)。

有人可以提供更多有关此的信息吗?

谢谢。

路易斯



1> davidfowl..:

默认ComplexTypeModelBinder值是根据来自请求的名称值对构建一个复杂的对象图。这些名称值对来自各种IValueProvider实现。可以表示查询字符串,表单值,标题或自定义源。ASP.NET Core的默认行为基于原始的ASP.NET MVC行为,其中,复杂对象不仅由请求正文中的数据组成,还由请求的各个部分组成。这意味着您最终可能会从查询字符串以及正文中获得对象中的值。

为了明确起见,我们在ASP.NET Core MVC中进行了调用,要求[FromBody]规避此行为,然后直接调用IInputFormatter管道。

PS:在装饰有[ApiController]属性的ASP.NET Core 2.1控制器中,无需显式指定[FromBody]即可免费获得此控件。

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有