PAC の shExpMatch は正規表現ではなくワイルドカードを使う
プロキシのルールは正しく見えても一致しないことがあります。shExpMatch と JavaScript の正規表現は異なるパターン言語を使うためです。
PAC では、shExpMatch はシェル形式のワイルドカードを使います。example.com のサブドメインに対しては次のように書きます。
if (shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}これらの戻り値には、ポリシーが選択した HTTP エンドポイントを使ってください。HTTP プロキシ一覧は、許可された公開経路の候補を提供します。アスタリスクは文字の並びに一致します。正規表現の繰り返し演算子ではないため、正規表現のように見える .*example.com は意味を変えてしまいます。
ポリシーに親ドメインを含める場合は、正確な名前を明示してください。
if (host === "example.com" || shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}代わりに *example.com を使うと、区切りのドットなしでそれらの文字で終わる名前も受け入れてしまいます。これは意図したドメイン境界を越えて集合を広げます。
移植可能な PAC ワイルドカードの基準には * と ? が含まれます。文字クラスは実装によって異なります。JavaScript の正規表現は代わりに test() と独自のアンカーおよびエスケープの規則を使います。
意図した入力に一致させてください。host はホスト名ですが、url はスキームを含み、サニタイズされている可能性があります。ドメインのルールが、ブラウザが決して渡さないパスに偶発的に依存してはいけません。