FindProxyFor() URL 関数の構文は次のとおりです。
function FindProxyForURL(url, host){ ...}
ブラウザがアクセスするすべての URL に対して、url および host パラメータが送られ、次のようにして関数が呼び出されます。
ret = FindProxyForURL(url, host);
url は、ブラウザからアクセスされる完全な URL です。
host は、アクセスされた URL から抽出されるホスト名です。これは便宜上使用しているだけで、:// と最初の : またはそのあとの / の間にある文字列と同じものです。このパラメータにはポート番号は含まれません。ポート番号は必要に応じて URL から抽出できます。
ret (戻り値) は、設定を記述した文字列です。
関数の戻り値
自動設定ファイルには、関数 FindProxyForURL () が含まれています。この関数は、クライアントホスト名と、アクセスしている URL をパラメータとして使用します。この関数は、ブラウザに処理方法を指示する 1 つの文字列を返します。この文字列が null の場合は、プロキシは使用されません。この文字列には、次の表に示す構成ブロックを、セミコロンで区切っていくつでも含めることができます。
表 17–2 FindProxyForURL() の戻り値
戻り値 |
ブラウザの結果のアクション |
---|---|
DIRECT |
プロキシを経由せずに、サーバーに直接接続します。 |
PROXY host:port |
指定されたプロキシとポート番号を使用します。複数の値がセミコロンで区切られている場合、最初のプロキシが使用されます。そのプロキシで失敗した場合は、それ以降のプロキシが順に使用されます。 |
SOCKS host:port |
指定された SOCKS サーバーを使用します。複数の値がセミコロンで区切られている場合、最初のプロキシが使用されます。そのプロキシで失敗した場合は、それ以降のプロキシが順に使用されます。 |
ブラウザは、使用できないプロキシサーバーに遭遇すると、30 分後に以前に応答のなかったプロキシに自動的に再度アクセスします。それでも応答がなければ 1 時間後というように、30 分間隔で再試行します。つまり、プロキシサーバーを一時的にシャットダウンした場合でも、再起動後 30 分以内には、クライアントがプロキシの使用を再開することになります。
すべてのプロキシが停止しており、DIRECT 戻り値が指定されていない場合、ブラウザは、一時的にプロキシを無視して直接接続を試みるかどうかをユーザーに問い合わせます。ブラウザは、プロキシを 20 分後に再試行し、さらにまた 20 分後というように、20 分間隔で再試行するかどうかを問い合わせてきます。
次の例では、戻り値は、ポート 8080 上で w3proxy.example.com というプロキシを使用するようにブラウザに指示していますが、このプロキシが使用できない場合、ブラウザはポート 8080 上で proxy1.example.com というプロキシを使用します。
PROXY w3proxy.example.com:8080; PROXY proxy1.example.com:8080
次の例では、一次プロキシは w3proxy.example.com:8080 で、このプロキシが使用できない場合、ブラウザは proxy1.example.com:8080 を使用します。これらのプロキシがどちらも使用できない場合、ブラウザはサーバーに直接アクセスします。さらに 20 分後、ブラウザは最初のプロキシを再試行するかどうかを問い合わせてきます。
PROXY w3proxy.example.com:8080; PROXY proxy1.example.com:8080; DIRECT