如何执行HTTP POST和用户重定向到一个外部网站?(How to perform an HTTP

2019-10-19 07:36发布

因此,作为标题暗示一个人如何执行HTTP POST到外部网站,同时将用户重定向呢? 我要寻找类似于此:

Redirect("MyWebsite.com", HttpAction.POST, new RedirectData(new { item = "itemValue"}));

它在ASP.NET MVC工作要做。

编辑

这种行为是必要的外部网站实现认证。 为验证算法:

  1. 用户导航到需要他来标识的网页。
  2. 该网页调用验证网站的网络服务,并初始化认证。
  3. 初始化返回GUID必须被张贴到指定的URL(比方说,它是“MyWebsite.com”)。
  4. 假设用户被重定向到的数据被张贴到URL。

到目前为止,我已经成功地想出这样的:

string url = "MyWebsite.com";
NameValueCollection formData = new NameValueCollection();
formData["ticket"] = Ticket.ticket;
WebClient webClient = new WebClient();
byte[] responseBytes = webClient.UploadValues(url, "POST", formData);

Response.BinaryWrite(responseBytes);
Response.Redirect("MyWebsite.com", true);

我得到的回应是我应该被重定向到该网站的HTML,问题是 - 什么呢? 我如何告诉,显示HTML,我通过响应得到了浏览器吗? 如果我只是重定向到“MyWebSite.com”将执行一个GET操作,这不是我所期待的。 做响应的二进制写无所作为 - 它只是写POST操作以我目前执行动作的响应 - 没有重定向到“MyWebSite.com”。

Answer 1:

如果你想张贴和重定向到一个外部网站,那么你应该让你的窗体的行动直接进入该网址。 我们没有理由来处理在你身边任何东西。 但是,除非你控制的外部站点或有某种安排,才能够做到这一点,它很可能将无法正常工作。 几乎所有的平台实现了某种CSRF保护,防止正是这种类型的东西。



Answer 2:

.NET支持以下-

   using (var client = new WebClient())
    {
        client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-      urlencoded";
        var data = new Person 
        { 
              Name = "Glitch100"
        }
        var result = client.UploadString("http://www.website.com/page/", "POST", data);
        Console.WriteLine(result);
    }

Web客户端或HttpWebRequest的可以在服务器端用于发布数据。

好奇 - 什么是想要做什么原因呢?

链接:

http://msdn.microsoft.com/en-us/library/system.net.webclient(v=vs.110).aspx

POST字符串的ASP.NET Web API应用程序-返回null

如何使用服务器端邮政MVC4数据到外部URL



文章来源: How to perform an HTTP POST and redirect the user to an external site?