如何将数据重定向到ASP.NET中的另一个URL?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我想重定向一个响应到另一个URL,而它在HTTP头中包含一些POST数据。

// Inside an ASP.NET page code behind:
Response.Redirect("http://www.example.com/?data=sent%20via%20GET");
// This will sent data to http://www.example.com via GET.
// I want to POST this data to http://www.example.com instead.

如何在ASP.NET中执行此操作?

提问于
用户回答回答于

你也可以用这个技巧发送大量数据。

Response.Clear();

StringBuilder sb = new StringBuilder();
sb.Append("<html>");
sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
sb.AppendFormat("<form name='form' action='{0}' method='post'>",postbackUrl);
sb.AppendFormat("<input type='hidden' name='id' value='{0}'>", id);
// Other params go here
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");

Response.Write(sb.ToString());

Response.End();
用户回答回答于

无法使用重定向进行POST。根据定义,重定向意味着服务器使用新位置向客户端发送302重定向HTTP状态代码,以便客户端向此新位置发出GET请求。这就是HTTP协议的工作原理,并且您无法做到这一点。

因此,实现此目的的一种方法是重定向到某个临时页面,该页面将包含一个HTML <form>method="POST"并包含要作为隐藏字段发送的值。然后你可以使用javascript来自动提交这个表单。

扫码关注云+社区