1

私はすでにproxy.pacファイルを動作させています。Web ブラウザーに応じて、クライアントが異なるプロキシ サーバーを使用するようにします。

問題ないと思いました。ブラウザの名前/バージョンを検出するための Java スクリプトのスニペットが多数あります。

私が見つけたサンプルはすべて「navigator.appName」を使用しています。これを通常の Web サイトでテストすると、問題なく動作します。同じものをproxy.pacに入れても機能しません。ナビゲーター オブジェクトが存在しないようです。

ユーザーエージェントに従ってプロキシを切り替える方法を提案している人はいますか?

私の目標は、すべての IE6 が特定のプロキシを使用し、残りはデフォルトのプロキシを使用することです。

背景: IE6 は、デフォルト プロキシで使用される Kerberos 認証をサポートしていません。したがって、LDAP 認証を使用して追加のプロキシをセットアップします。

助けてくれてありがとう。

4

2 に答える 2

0

おそらく、ブラウザー間に多少の微妙な JavaScript エンジンの違いがあり、たとえば
if (typeof(someIESpecificFunction) != "undefined")
、try と catch を使用したり
、いくつかの組み込み関数の結果を比較して微妙な違いを見つけたりすることができます。

http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(ECMAScript)http://www.robertnyman.com/javascript/index.htmlが参考になるかもしれません。

更新: もう 1 つのブラウザー バージョン固有の動作:

http://technet.microsoft.com/en-us/library/dd361918.aspxから:

    function FindProxyForURL(url, host)
    {
        if(weekdayRange("WED", "SAT", "GMT"))
            return "PROXY proxy:80";
        else
            return "DIRECT";
    }

weekdayRange( <day1> [,<day2>] [,<GMT>] ) 関数は、現在のシステム時刻がパラメーター <day1>、<day2>、および <GMT> で指定された範囲内にあるかどうかを返します。最初のパラメーターのみが必要です。GMT パラメータは、ローカル タイム ゾーンではなく GMT で取得される時刻を設定します。

注 <day1> == <day2> で関数が呼び出される場合、以前のバージョンの Internet Explorer では、Netscape Navigator での結果とは異なる結果が得られます。具体的には、以前のバージョンの Internet Explorer はこの日の範囲を 1 週間と解釈していましたが、Internet Explorer 6 と Netscape Navigator はこの範囲を 1 日と解釈していました。たとえば、今日が月曜日の場合、weekdayRange("TUE", "TUE") を呼び出すと、以前のバージョンの Internet Explorer では TRUE が返され、Internet Explorer 6 と Netscape Navigator では FALSE が返されます。

更新 2: http://blogs.msdn.com/b/wndp/archive/2006/07/18/ipv6-wpad-for-winhttp-and-wininet.aspxによると、IE7 と古いものを区別できるはずです。 IE のバージョン (他のブラウザでは、これらの拡張機能がサポートされている場合とサポートされていない場合があります。たとえば、Chrome についてここで言及されています: http://code.google.com/p/pactester/issues/detail?id=9 )

これまでの情報に基づいて、IE 5.5、IE 6、IE 7、IE 8、IE 9 を区別できるはずですか?

そのような便利なものがあればお知らせください。

于 2012-07-23T11:27:11.160 に答える
0

Conditional Compilationを介して PAC スクリプト内の IE を検出してみてくださいconst ifIE = /*@cc_on!@*/false;
条件付きコンパイルは、新しいまたは古い IE/Edge のバージョンによって異なる場合があります。

この回答のテストは行っていません。コメントで機能するかどうかをお知らせください。

于 2017-01-13T15:34:23.100 に答える