Page 509 - HTTP权威指南
P. 509
PAC 文件是个 JavaScript 文件,其中必须定义函数:
function FindProxyForURL(url, host)
如下所示,浏览器要为请求的每条 URL 调用这个函数:
return_value = FindProxyForURL(url_of_request, host_in_url);
其返回值为一个字符串,用来说明浏览器应该到哪里请求这个 URL。返回值可以是
所关联的代理名称列表(比如, PROXY proxy1.domain.com,PROXY proxy2.
domain.com),或者是字符串 "DIRECT",这个字符串说明浏览器应该绕开所有的
代理,直接连接原始服务器。
图 20-10 给 出 了 浏 览 器 对 PAC 文 件 的 请 求 以 及 响 应 此 请 求 的 操 作 顺 序。 在 本
463 例 中, 服 务 器 回 送 了 带 有 JavaScript 程 序 的 PAC 文 件。JavaScript 程 序 中 有 一
个 FindProxyForURL 函数,用来告知浏览器,如果所请求的 URL 的主机位于
netscape.com 域中,就直接与原始服务器联系,所有其他请求都连接到 proxy1.joes-
cache.com。浏览器会为它所请求的每个 URL 调用这个函数,并根据此函数返回的
结果进行连接。
嗨,我配置为向你请
求PAC文件。请把这
个文件发给我。 PAC服务器
HTTP/1.0 200 OK
Content-type: application/x-ns-proxy-autoconfig
Content-length: 176
function FindProxyForURL(url,host)
{
if (dnsDomain(host,".netscape.com")
return "DIRECT";
浏览器 else
return "PROXY proxy1.joes-cache.com:8080; DIRECT";
}
发往netscape.com域的请 如果代理可用,就直接
求会直接发送给服务器。 连接它,如果代理1不可
达,就直接连接原始服务器。
因特网
原始服务器
对所有其他域的请求都发送 e
给proxy1.cache1.com。 代理1
图 20-10 代理自动配置
486 | 第 20 章