我一直在寻找至少知道网页中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是否有不同的域而不抛出异常?
答案 0 :(得分:1)
这是浏览器的一项安全功能,可以阻止人们被骗。否则,您可以将他们喜欢的银行网站嵌入到iFrame中并从中提取数据。