我目前有一个网站,在某些地方使用 iFrame 从我们的 Intranet 加载页面(这是不可避免的)。我想要做的是能够检测客户端是否能够从其当前位置访问 Intranet 页面。我有以下代码,但显然它只检查服务器是否可以联系 Intranet(剧透警报:它完全可以)。
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;
}
})