我目前有一个网站,在某些地方使用iFrame从我们的Intranet加载页面(这是不可避免的)。我想要做的是能够检测客户端是否能够从其当前位置访问Intranet页面。我有以下代码,但显然它只检查服务器是否可以联系内部网(扰流警报:它完全可以)。如何检测客户端是否可以访问iFrame中的网站?
public bool IsAvailable()
{
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create("http://localintranetsite/");
httpReq.AllowAutoRedirect = false;
try
{
HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse();
if (httpRes.StatusCode == HttpStatusCode.NotFound)
return false;
else
return true;
}
catch
{
return false;
}
}
我希望能够做到这一点,而不必依赖于检测网站用户的IP地址,当然,如果可能的话。
我的其他选择是在无法联系Intranet站点时执行自定义404页面,但我不确定我可以做到这一点(或者如果我可以如何做到这一点)。
如果它有什么区别,加载iFrame的代码是从JavaScript调用的Web服务中,所以虽然在我的Web服务中使用的asp.net解决方案是理想的,但JavaScript函数也可以工作。
我的(没有帮助)当前的解决方案试图检查是否可以访问Intranet站点,但它只能检查Web服务器是否可以访问它,而不是客户端。
对于那些好奇,这是JavaScript(通过jQuery)的方式(这是行不通的,因为它是跨域):
$.ajax({
type: 'HEAD',
url: 'http://intranetsite/',
success: function() {
local = true;
},
error: function() {
local = false;
}
})
+1。请注意,postMessage在IE8及更高版本中可用,因此除非必须支持IE6/7,否则它是在不同域上的帧之间进行通信的最佳方法。 –
感谢您的反馈 - 不幸的是,我可能必须这样做,而无需访问其他Intranet网站。根据我的理解,我们托管它,其他人运行它。 – Maverick