WinHTTP AutoProxy 支持

为了简化代理设置的配置,WinHTTP 5.1 实现了 Web 代理自动发现 (WPAD) 协议,也称为 autoproxy。

AutoProxy 概述

使用 WinHTTP 发送 HTTP 请求的应用程序和组件应确保正确设置代理配置。 例如,除非客户端具有直接 Internet 连接,否则通常应通过将客户端的本地网络连接到 Internet (的 Web 代理服务器发送 HTTP 请求,例如,企业 LAN) 上的 Web 客户端通常就是这种情况。 对于基于服务器的应用程序,代理配置通常由服务器的管理员使用 WinHTTP ProxyCfg.exe 实用工具进行管理。 服务器管理员事先知道代理服务器的名称,并使用ProxyCfg.exe在 WinHTTP 可以查找的注册表中记录此设置。 但是,要求客户端桌面最终用户手动配置 WinHTTP 代理设置是有问题的。 最终用户可能不知道代理服务器的名称;要求最终用户运行 ProxyCfg.exe 实用工具可能是组织的支持负担。 为了支持良好的用户体验,启用 Web 的客户端应用程序应确定代理配置,而无需用户干预。

为了更轻松地为基于 WinHTTP 的应用程序配置代理设置,WinHTTP 现在实现了 Web 代理自动发现 (WPAD) 协议,通常称为 autoproxy。 这是 Web 浏览器实现的自动发现代理配置的协议,无需最终用户手动指定代理服务器。 此功能从 Windows 2000 Service Pack 3、Windows XP Service Pack 1 和 Windows Server 2003 中的 WinHTTP 版本 5.1 开始可用。 请注意,尽管 Microsoft Internet Explorer 和 Microsoft WinHTTP 都支持 WPAD,但规范从未超过“Internet-Draft”阶段,并在 2001 年 5 月到期。

WPAD 协议的工作原理如下:

  1. 使用 DHCP 和/或 DNS 网络协议,可发现代理自动配置 (PAC) 文件的 URL。 URL 标识客户端本地网络上的 PAC 文件。 WinHTTP 仅支持“http:”和“https:”PAC URL;例如,它不支持“file:”URL。

  2. PAC 文件将下载并选择性地缓存在客户端的计算机上。 PAC 文件是一个可执行脚本,可在给定目标主机名和 URL 的情况下生成一个或多个代理服务器的列表。 WinHTTP 仅支持基于 ECMAScript 的 PAC 文件。

  3. 在每个 HTTP 请求上,执行 PAC 脚本代码,并将 HTTP 请求的主机名和 URL 作为参数传入。 WinHTTP 要求 PAC 脚本代码包含名为 FindProxyForURL 的函数,格式如下:

  4. FindProxyForURL( url, host );
    

    此函数计算 HTTP 客户端可用于传输请求的一个或多个代理服务器的列表。 如果 PAC 脚本确定 HTTP 客户端无需通过代理服务器即可直接访问目标服务器,则它使用特殊返回值指示这一点。

AutoProxy 主题