无法获取 proxy.pac 文件以使浏览器直接访问本地主机

无法获取 proxy.pac 文件以使浏览器直接访问本地主机

我要把这个问题抛到一边。

我们刚刚开始使用代理来记录用户与登录名对应的互联网使用情况。这是在 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

我查看过的一些代理信息站点:

提前致谢。

答案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 中尝试过这个。

相关内容