PAC スクリプトは JavaScript の構文を使います。しかし、それが Web ページの中で動くという意味ではありません。

プロキシリゾルバが提供する実行環境には、ルーティング用の入力と補助関数があります。ページの window や document、DOM、navigator.appName を保証するものではありません。そのため、ページからコピーしたブラウザ判定の断片は、プロキシルールが何かを返す前に失敗することがあります。

経路は、渡された URL やホスト名といったサポートされている情報、またはネットワークポリシーが必要とする場合は文書化された補助関数に基づかせてください。JavaScript エンジンの偶発的な癖からブラウザのバージョンを推測し、その推測で出口を決めてはいけません。

管理対象クライアントごとに本当に異なるポリシーが必要なら、その管理システムを通じて意図した設定を配布してください。Firefox のエンタープライズポリシーは、管理対象の Firefox インストール向けの配布方法のひとつです。共有の PAC ファイルに文書化されていないブラウザ検出のパズルを埋め込むより明確です。

通常の JavaScript として正しく解析できるスクリプトが、サポートされた PAC スクリプトであるとは限りません。言語の構文だけでなく、リゾルバの文書化された環境を確認してください。

関連記事