私は現在、いくつかの場所で iFrame を使用してイントラネットからページをロードする Web サイトを持っています (これは避けられません)。私がやりたいことは、クライアントが現在の場所からイントラネット ページにアクセスできるかどうかを検出できるようにすることです。私は次のコードを持っていますが、明らかに、サーバーがイントラネットに接続できるかどうかのみをチェックします (ネタバレ注意: 完全に接続できます)。
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;
}
}
もちろん、可能であれば、WebサイトユーザーのIPアドレスの検出に依存することなく、これを実行できるようにしたいと考えています.
私の他のオプションは、イントラネット サイトに接続できない場合にカスタム 404 ページを作成することです。
iFrame をロードするコードが javascript から呼び出される Web サービスにあることに違いがある場合は、私の Web サービスに含まれる asp.net ソリューションが理想的ですが、javascript 関数も機能します。
私の(役に立たない)現在のソリューションは、イントラネット サイトにアクセスできるかどうかを確認しようとしますが、クライアントではなく Web サーバーがアクセスできるかどうかのみを確認できます。
好奇心旺盛な人のために、これは(jQueryを介した)javascriptの方法です(クロスドメインであるため機能しません):
$.ajax({
type: 'HEAD',
url: 'http://intranetsite/',
success: function () {
local = true;
},
error: function () {
local = false;
}
})