在 PAC 中,shExpMatch 使用 shell 风格的通配符。对于 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 包含协议,并且可能已被清理。域名规则不应意外依赖浏览器从不会提供的路径。

相关文章