![无法获取 proxy.pac 文件以使浏览器直接访问本地主机](https://linux22.com/image/485688/%E6%97%A0%E6%B3%95%E8%8E%B7%E5%8F%96%20proxy.pac%20%E6%96%87%E4%BB%B6%E4%BB%A5%E4%BD%BF%E6%B5%8F%E8%A7%88%E5%99%A8%E7%9B%B4%E6%8E%A5%E8%AE%BF%E9%97%AE%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA.png)
我要把这个问题抛到一边。
我们刚刚开始使用代理来记录用户与登录名对应的互联网使用情况。这是在 ISA Server 2004(位于我们的 Internet 网关服务器上)上设置的。启用了集成和基本形式的身份验证,并要求所有用户进行身份验证。我已勾选并启用了 ISA 上的一系列设置,以便它忽略内部地址和域。
为了将用户引导至代理服务器,我已在 DHCP 服务器上使用 DHCPINFORM 检测功能将客户端引导至 proxy.pac 文件的网络位置(此处描述)。我还将 wpad.dat 设置在与 proxy.pac 相同的区域(两个文件相同)。
我正在使用的当前 proxy.pac 文件:
function FindProxyForURL(url, host)
{
// Trying to save localhost
if (localHostOrDomainIs(host, "localhost")) return "DIRECT";
if shExpMatch (url, "http://localhost*") return "DIRECT";
// If specific URL needs to bypass proxy, send traffic direct.
var resolved_ip = dnsResolve(host);
if (isInNet(resolved_ip, "172.22.145.0", "255.255.255.0") ||
isInNet(resolved_ip, "192.168.1.0", "255.255.255.0") ||
isInNet(resolved_ip, "127.0.0.1", "255.255.255.255"))
return "DIRECT";
return "PROXY ^gatewaynamehere^.baytech.local:8080; DIRECT";
}
(我们的内部IP是172.22.145.*范围)
现在我遇到的问题是,每当请求 localhost 或 127.0.0.1 时,proxy.pac 文件都会使浏览器转到代理。当我监控我的 IP 地址时,我可以在 ISA 服务器上看到请求。我可以请求我们 Intranet 中的其他服务器,它不会触及代理(这是正确的)。但我怀疑这是因为 ISA 服务器上的设置,而不是因为 proxy.pac 文件(我可能错了)。
一个附带问题是,我们需要手动将 Firefox 指向 proxy.pac 文件,才能使其适用于 Firefox。此外,少数 IE 用户也需要手动指向。最好的办法是将我们的浏览器设置为自动检测(IE 和 FF),这样无论用户身在何处,一切都能正常工作。
通过组策略或浏览器设置手动进行设置并不理想,因为它会给将笔记本电脑带回家的人带来麻烦。
我还尝试禁用 IE 代理缓存,如下所述:http://support.microsoft.com/kb/271361
我查看过的一些代理信息站点:
- Pac 文件功能
- homepages.tesco.net/~J.deBoynePollard/FGA/web-browser-auto-proxy-configuration.html
- www.findproxyforurl.com
提前致谢。
答案1
我还没有尝试过,但是根据 sun.com docco,IsInNet 函数以主机而不是 IP 作为第一个参数。
所以我认为:
if (isInNet(resolved_ip, "172.22.145.0", "255.255.255.0") ||
isInNet(resolved_ip, "192.168.1.0", "255.255.255.0") ||
isInNet(resolved_ip, "127.0.0.1", "255.255.255.255"))
return "DIRECT";
应改为:
if (isInNet(host, "172.22.145.0", "255.255.255.0") ||
isInNet(host, "192.168.1.0", "255.255.255.0") ||
isInNet(host, "127.0.0.1", "255.255.255.255"))
return "DIRECT";
答案2
提示:在 Firefox 中调试 pac 文件时,您可以使用alert("blah")
调试消息,然后查看将打印这些消息的错误控制台(工具菜单)。
答案3
好的,我想我现在已经可以运行它了……
我的实际问题是它从未运行过。此外,如果 proxy.pac 文件有错误,它决定默默地死掉。所以我回到基础,尝试在我的计算机上使用一个非常简单的 proxy.pac 文件本地运行它。(当我的警报第一次出现时,我感到震惊)。
一旦我完成了这项工作,我就会逐行进行构建,直到得到适合我的网络的东西。
对于该帖子的所有未来读者来说,还有一些更重要的信息!
然后我将其移回我最初使用的服务器,然后遇到了 FF 和 IE 的自动检测问题。经过一番研究,似乎在自动检测打开时,IE7 和 IE8 处理 pac 文件的方式不同。(我使用的代理拾取方法是 DHCP)。因此 IE8 似乎需要ipconfig /renew获取一个新的,而 IE7 需要ipconfig /renew 和 ipconfig /flushdns
另外:Firefox 仅报告我在错误控制台(Ctrl + Shift + J)中收到的警报,而 IE 使用弹出窗口来报告警报。
几天后,DHCP 252 选项传播到所有工作站。但是 FF 似乎仍然无法自动检测,所以我只能使用手动点或 FoxyProxy 附加组件作为解决方法。
感谢大家的意见!
答案4
基于 Mozilla 的浏览器允许您使用文件:URL,这使得对 .pac 文件进行原型设计和测试变得更加容易。
我还没有在 IE 中尝试过这个。