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 章
   504   505   506   507   508   509   510   511   512   513   514