Edited at

proxy.pacを記述する際に気をつけること

More than 1 year has passed since last update.

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ではPacHttpsUrlStrippingEnabledfalseに設定することで、Firefoxではnetwork.proxy.autoconfig_url.include_pathtrueにすることで、HTTPSでもHTTPと同じ挙動にできるようです (セキュリティの観点から見たとき、非推奨な設定となっているらしいので注意)。


複数の設定を指定する方法

以下のように複数の設定を指定したいとします。


  1. 設定Aを試す

  2. 設定Aで404が返されたら設定Bを試す

  3. 設定Bで404が返されたら設定Cを試す

  4. ......

このような場合、以下のようにFindProxyForURL関数の戻り値を指定します。



return "A;B;C;...";



参考文献