有没有办法在webbrowser控件中获取Iframe内的网页跨域?

时间:2011-06-25 07:02:13

标签: .net webbrowser-control cross-domain

我一直在寻找至少知道网页中iframe(带有跨域)的域名,使用.NET WebBrowser控件。

我正在使用.NET 2.0 Visual Studio 2005 C#

例如,在webbrowser控件中,它包含带有不同域的iframe的网页。

我想获得价值“www.google.com”

HTTP://localhost/index.html

<html>
  <head></head>
  <body>
    <iframe src="http://www.google.com/foobar"></iframe>  
  </body>
</html>

根据MSDN,我尝试使用跨域脚本获取域名并获得UnauthorizedAccessException

  HtmlWindowCollection frames = webBrowser1.Document.Window.Frames;
  if (frames.Count > 0)
  {
    for (int i = 0, j = frames.Count; i < j; i++)
    {                        
      //if the iframe in the page has different domain
      if (frames[i].Document.Domain != this.webBrowser1.Document.Domain)
      {
         MessageBox.Show("iframe has different domain");
      }
    }
  }

但看起来我甚至无法访问该域名。

我也尝试了Url frames[i].Url,但仍然是同样的例外。

这是否意味着我无法从iframe获取任何信息,而不是iframe?有没有办法检测iframe是否有不同的域而不抛出异常?

1 个答案:

答案 0 :(得分:1)

这是浏览器的一项安全功能,可以阻止人们被骗。否则,您可以将他们喜欢的银行网站嵌入到iFrame中并从中提取数据。