2005-09 / 2005-09-01

前のエントリ: Google MAP キーバインド [link]
次のエントリ: LAN 用 zone の設定 [bind]

proxy.pac で自動proxy設定
2005-09-01-1 / カテゴリ: [HTTP][JavaScript] / [permlink]

今更ドキュメントシリーズ。
ちょうど1年前くらいに社内用で作成してたけど、メモってなかったので。

Proxy Auto-Config File Format

必ず定義しなければならないのは FindProxyForURL(url, host) 関数。通常のプログラムの main に相当するようなもの。
引数の url にはアクセスしようとする URL が、host にはそのアドレスが入る。
で、戻り値として "DIRECT" で直接接続、"PROXY proxy.example.org:8080" で proxy.example.org:8080 を使うようなる。
個人的に良く(という程使ってないけど)使う関数は isInNet と shExpMatch。まぁ例見るのがわかりやすいかな。shExpMatch は正規表現ではなくファイルグロブによるマッチング(っぽい)

以下、「ホスト名でのアクセス, example.org, example.net, 192.168.*.*, localhost は直接接続、example.com, 10.*.*.* は proxy に 172.24.1.1:8080 使い、それ以外は proxy.example.org:8080 で Web アクセス」

function FindProxyForURL(url, host)
{
  if (isPlainHostName(host) ||
      shExpMatch(url, "http://*example.org*") ||
      shExpMatch(url, "http://*example.net*") ||
      isInNet(host, "192.168.0.0", "255.255.0.0") ||
      isInNet(host, "127.0.0.1", "255.0.0.0")) {
    return "DIRECT";
  }
  else if (shExpMatch(url, "http://*example.com*/") ||
           isInNet(host, "10.0.0.0", "255.0.0.0")) {
    return "PROXY 172.24.1.1:8080";
  }
  else {
    return "PROXY proxy.example.org:8080";
  }
}

んで、proxy.pac という名前で、proxy 不要でアクセスできる Web サーバにおいておき、ブラウザの「自動構成スクリプトを使用する」やら「自動でプロキシを設定する」やらで設定すれば OK

で、netscape のドキュメントには、application/x-ns-proxy-autoconfig という MIME type を追加せよとあるんだけど、なくても一応動くんだよな… うーむ
前のエントリ: Google MAP キーバインド [link]
次のエントリ: LAN 用 zone の設定 [bind]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12