- 可以用 3 种方法来判断 Web 浏览器客户端如何知道要连接到某个代理上去:显式的浏览器配置、动态自动配置、透明拦截。
- 代理可以顺次将客户端请求重定向到另一个代理上去。比如,没有缓存此内容的代理缓存可能会选择将客户端重定向到另一个代理缓存。这样一来,响应就会来自与客户端请求资源的地址不同的另外一个地址,所以,我们还会讨论几种用于对等代理-缓存重定向的协议:ICP、CARP 和 HTCP。
1. 显式浏览器配置
- 大多数浏览器都可以配置为从代理服务器上获取内容。
- 缺点:
- 配置为使用代理的浏览器,即使在代理无法响应的情况下,也不会去联系原始服务器。如果代理崩溃了,或者没有正确配置浏览器,用户就会遇到连接方面的问题。
- 对网络架构进行修改,并将这些修改通知给所有的终端用户都是很困难的。如果服务提供商要添加更多的代理服务器,或者使其中一些退出服务,用户都要修改浏览器代理设置。
2. 代理自动配置
- 自动配置方式可以动态配置浏览器,连接到正确的代理服务器,以解决这个问题。这种方法已经实现了,被称为代理自动配置(PAC)协议。PAC 是网景公司定义的,网景公司的 Navigator 和微软的 Inernet Explorer 浏览器都支持此协议。
- PAC 的基本思想是让浏览器去获取一个称为 PAC 的特殊文件,这个文件说明了每个 URL 所关联的代理。必须配置浏览器,为这个 PAC 文件关联一个特定的服务器。这样,浏览器每次重启的时候都可以获取这个 PAC 文件了。
- 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”,这个字符串说明浏览器应该绕开所有的代理,直接连接原始服务器。 - 下图给出了浏览器对 PAC 文件的请求以及响应此请求的操作顺序。