如何使用 ASP.NET MVC 将网页加载到 iframe 中
本文关键字:加载 iframe 网页 何使用 ASP NET MVC | 更新日期: 2023-09-27 18:33:48
我有一个外部网页,我需要使用HTTP Post访问它,并包含在iframe中。 该网页具有一组访问页面的示例说明,如下所示,但它们假定是 Windows 窗体解决方案;我使用的是 ASP.NET MVC。
如何将这个以 WebBrowser 为中心的解决方案转换为可以成功发布到外部站点并将结果加载到 iframe 中的东西?
private WebBrowser wb_inline = null;
private void Submit_Click(object sender, EventArgs e)
{
string url = "http://www.example.com";
string setupParameters = "account_token=abc123";
ServicePointManager.ServerCertificateValidationCallback =
(s, cert, chain, ssl) => true;
ASCIIEncoding encoding = new ASCIIEncoding();
var postData = setupParameters;
if (null == wb_inline)
{
wb_inline = new WebBrowser(this);
wb_inline.Location = new System.Drawing.Point(100, 277);
wb_inline.Size = new System.Drawing.Size(675, 650);
}
Controls.Add(wb_inline);
wb_inline.Visible = true;
string AdditionalHeaders = "Content-Type: application/json";
byte[] data = encoding.GetBytes(postData);
wb_inline.Navigate(payProsUrl, "", data, AdditionalHeaders);
}
有没有办法用HttpWebResponse(或其他一些控件)做这样的事情,并将其包含在iframe中? 我一直在尝试适应它,但还没有成功。
根据w3schools:
An inline frame is used to embed another document within the current HTML document.
也就是说,iframe
用于通过给定的URL加载页面内容并将其呈现给用户进行交互。之后,您几乎无法控制用户对加载的页面执行的操作(他可以单击链接,发布表单等)。您无法将 HTTP 请求发送到iframe
,因为它只是一个显示另一个页面的"窗口",不支持复杂的方案。
要考虑的另一件事是,可以保护您正在加载的网页不嵌入到iframe
中。
实际上,有一些选择可以实现您想要的。对于使用 iframe
的纯服务器端解决方案,应执行以下操作:
1.创建一个操作方法,该方法将对您需要的 url 执行 HTTP POST 请求并获取结果以进行演示:
public ActionResult PostAndShow()
{
//do the posting
string result = requestStream.ReadToEnd(); //you can have similar code to fetch the server response
return Content(result);
}
2.In 网页,您将创建一个iframe
,该将指向您的操作PostAndShow
,并显示您对第三方服务器的HTTP POST请求的结果。
<iframe src="@Url.Action("PostAndShow", "My")" width="400" height="300"></iframe>