【问题标题】:HTML form post to asp.net controller across domainsHTML 表单跨域发布到 asp.net 控制器
【发布时间】:2015-08-12 17:37:33
【问题描述】:

我创建了一个 ASP.NET MVC 5 Web 应用程序,该应用程序必须从外部站点(在同一个公司 Intranet 中)接收帖子。我已经设置了我的控制器方法并创建了另一个 Web 应用程序来模拟帖子。发布页面表单如下所示:

<form action="http://localhost:12345/Home/MethodName" method="post">
    <input type="text" id="fullName" value="Joseph B. Blow" />
    <input type="text" id="dateOfBirth" value="3/4/1977" />
    <input type="submit" value="Submit" />
</form>

我在调试模式下启动我的“接收器”应用程序并在“/Home/MethodName”的第一行设置一个断点,然后断点被命中。 MethodName 看起来像这样:

[HttpPost]
[ValidateInput(false)]
public ActionResult MethodName()
{
    ...code here
}

当我检查MethodName 中的Request.Form 对象时,它完全是空的。在浏览器中使用开发人员工具时,Content-Length 为 0。我尝试创建一个自定义模型类,该类具有 fullNamedateOfBirth 属性,并将其用作 MethodName 中的唯一参数,但对象的属性始终为空。我还尝试使用 FormCollection 对象,它不包含任何键。我做的另一个尝试是使用StreamReader 对象并在Request.InputStream 对象上使用它,看看是否会拉入发布的值。

我可能会考虑使用 ajax 调用来发布数据,但问题是用户也必须被重定向到页面。有一项公司安全政策反对不使用查询字符串从站点到站点传递数据(我知道,post 不一定比 get 更安全,但规定了规则)。

这似乎不应该这么难,但我已经忍受了一段时间。如果有人做过类似的事情或可以将我指向另一个方向以将这些值从一个页面传递到另一个页面,我将不胜感激。

提前致谢。

【问题讨论】:

  • 为什么要在 MVC 中这样做,而不是使用 webAPI 项目来处理接收请求?
  • 最初这是一个快速而肮脏的应用程序。我通过使用查询字符串来实现结果。由于它有点爆炸,我发现了“无查询字符串”规则。没有 Web API 就不能做到这一点吗?
  • 可能是的,但我的直觉反应是构建一个快速的 api,可以说是我的“处理程序”,然后从那里开始
  • 我是个大傻瓜。我所要做的就是在表单输入中包含 name 属性,然后控制器可以看到这些值。换句话说,而不是 我将其更改为 。我将自己暴露为一个完整工具的唯一原因是希望它可以帮助可能遇到相同问题的其他人。
  • 您可以将此作为答案发布,可能比评论更有帮助

标签: c# html asp.net post cross-domain


【解决方案1】:

我是个大傻瓜。我所要做的就是在表单输入中包含 name 属性,然后控制器可以看到这些值。换句话说,而不是

<input type="text" id="fullName" value="Joseph B. Blow" />

我改成

<input type="text" NAME="fullName" value="Joseph B. Blow" />

我将自己暴露为一个完整的工具的唯一原因是希望它能帮助可能遇到同样问题的其他人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2010-11-14
    相关资源
    最近更新 更多