c# - 如何执行 HTTP POST 并将用户重定向到外部站点?

标签 c# asp.net-mvc http redirect

正如标题所暗示的那样,如何在将用户重定向到外部网站的同时执行 HTTP POST?我正在寻找与此类似的东西:

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

它必须在 ASP.NET mvc 中完成。

编辑

此行为是在外部网站上实现身份验证所必需的。认证算法:

  1. 用户导航到需要识别他的网页。
  2. 网页调用认证网站的web服务,初始化认证。
  3. 初始化返回必须发布到给定 URL 的 GUID(假设它是“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”。

最佳答案

如果您想发帖并重定向到外部站点,那么您应该让表单的操作直接转到该 URL。没有理由为您处理任何事情。但是,除非您控制外部站点或有某种安排能够执行此操作,否则它很可能不会工作。几乎每个平台都实现了某种 CSRF 保护,以防止此类事情发生。

关于c# - 如何执行 HTTP POST 并将用户重定向到外部站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21674357/

相关文章:

c# - Google Drive 读取和编辑文件并自动登录 .NET

c# - 使用 System.IO.SearchOption.AllDirectories 时出错

c# - 如何在C#或.NET中遵循发布者/订阅者策略?

javascript - 将 MVC 模型转换为 Knockout JS ViewModel

c# - 在 ASP.net core 3.0 中更改身份登录 URL

api - REST API设计

java - 在 Jetty servlet 中处理 uri 参数

c# - MVC 3 Razor,不显示默认值

asp.net-mvc - sitemap.xml url 返回 404 错误

html - HTML 中的链接是否有同源策略?