proxy.pac
を記述する際に気をつけることについてまとめたいと思います。
proxy.pacについて
プロキシ自動設定ファイル - HTTP | MDNをご覧ください。
デバッグ方法
通常のJavascriptとは異なり、proxy.pac
でデバッグ情報を出力する際にはalert
を用います。
例
alert("url: " + url + ", host: " + host);
デバッグ情報の閲覧方法
Google Chrome, Vivaldi
chrome://net-internals/#events にアクセスします。
Firefox
[メニューボタン] - [ウェブ開発] - [ブラウザーコンソール]をクリックします。
FindProxyForURL関数のurlに渡されるURL
FindProxyForURL
関数のurl
に渡されるURLは、HTTPとHTTPSで以下のように異なります。
プロトコル | アクセスしたURL |
url に渡されるURL |
---|---|---|
HTTP | http://example.com:1234/path/to/page?query=1 | http://example.com:1234/path/to/page?query=1 |
HTTPS | https://example.com:1234/path/to/page?query=1 | https://example.com:1234/ |
なお、Google ChromeやVivaldiではPacHttpsUrlStrippingEnabled
をfalse
に設定することで、Firefoxではnetwork.proxy.autoconfig_url.include_path
をtrue
にすることで、HTTPSでもHTTPと同じ挙動にできるようです (セキュリティの観点から見たとき、非推奨な設定となっているらしいので注意)。
複数の設定を指定する方法
以下のように複数の設定を指定したいとします。
- 設定Aを試す
- 設定Aで404が返されたら設定Bを試す
- 設定Bで404が返されたら設定Cを試す
- ......
このような場合、以下のようにFindProxyForURL
関数の戻り値を指定します。
例
return "A;B;C;...";