本例类似于示例 1:代理除本地主机之外的所有服务器,只是它将对防火墙外部的本地服务器使用代理。如果存在属于本地域而位于防火墙之外的主机(如主 Web 服务器),并且只有通过代理服务器才能访问到这些主机,则使用 localHostOrDomainIs()() 函数来处理这些例外情况:
function FindProxyForURL(url, host) { if ((isPlainhost name(host) || dnsDomainIs(host, ".example.com")) && !localHostOrDomainIs(host, "www.example.com") && !localHostOrDoaminIs(host, "merchant.example.com")) return "DIRECT"; else return "PROXY w3proxy.example.com:8080; DIRECT"; }
本例对 example.com 域中除本地主机之外的所有主机使用代理。主机 www.example.com 和 merchant.example.com 也要经过代理。
指定适当的例外情况顺序可以提高效率:localHostOrDomainIs()() 函数仅对本地域中的 URL 才会执行,而不是对于每个 URL 都要执行。请特别留意 and 表达式之前的 or 表达式两边的括号。