我正在尝试让代理自动检测在网络上运行,并且它在包括 IE 在内的所有浏览器上运行良好,但 Windows 更新不起作用。
我已经设置了一个 Web 服务器来提供相同的 WPAD 文件: http://wpad.ourdomain.com/wpad.dat http://proxy.ourdomain.com/proxy.pac http://proxy.ourdomain.com/
我已将 MIME 类型设置为返回为 application/x-ns-proxy-autoconfig,并且已将选项 252 添加到我们的 DHCP 服务器的 PAC URL。
最初我在文件上使用 Unix 行尾,因此我认为这可能会使 Windows 变得不稳定,因此我将其更改为 Windows 行尾,没有任何变化。
当我指定 PAC 手动执行的相同代理详细信息时,Windows 更新很顺利,但是当被告知自动检测或明确使用我们的 PAC URL 时,Windows 更新会失败。
Windows Update 失败的方式也很奇怪,您可以转到该页面,并且可以正常加载,可能是因为 IE 对 PAC 文件没有问题,但是,只要您单击“快速”(或“自定义”)按钮,进度条就会旋转 5 分钟左右,然后返回一条错误消息,提示连接失败。
这是从 WPAD 返回的完整内容,包括 HTTP 标头(尽管是匿名的):
$ curl http://wpad.ourdomain.com/wpad.dat -v
* About to connect() to wpad.ourdomain.com port 80 (#0)
* Trying 10.0.0.80... connected
* Connected to wpad.nuim.ie (10.0.0.80) port 80 (#0)
> GET /wpad.dat HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: wpad.ourdomain.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Thu, 22 Mar 2012 14:14:38 GMT
< Server: Apache/2.2.15 (Red Hat)
< Expires: Thu, 22 Mar 2012 17:14:38 GMT
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: application/x-ns-proxy-autoconfig; charset=ISO-8859-1
<
function FindProxyForURL(url, host) {
if (isInNet(host, '1.2.0.0', '255.255.0.0')) {
return 'DIRECT';
}
if (isInNet(host, '10.0.0.0', '255.0.0.0')) {
return 'DIRECT';
}
if (isInNet(host, '127.0.0.1', '255.255.255.255')) {
return 'DIRECT';
}
if (isInNet(host, '192.168.0.0', '255.255.0.0')) {
return 'DIRECT';
}
if (localHostOrDomainIs(host, 'somehost.something.com')) {
return 'DIRECT';
}
if (localHostOrDomainIs(host, 'someotherhost.somethingelse.com')) {
return 'DIRECT';
}
return "PROXY proxy1.ourdomain.com:3128;PROXY proxy2.ourdomain.com:3128;DIRECT";
}
//some debug information here in a comment
* Closing connection #0