PAC(代理自动配置)navigator.appName不可用

时间:2012-04-24 13:30:11

标签: configuration proxy pac

我已经有了一个有效的proxy.pac文件。我希望客户端根据他们的Web浏览器使用不同的代理服务器。

我想没问题。有许多java脚本片段,用于检测浏览器名称/版本。

我找到的样本使用了所有“navigator.appName”。如果我在常规网站上测试它,那可行。当我把它放到我的proxy.pac中时,它不起作用。导航器对象似乎不存在。

有没有人建议如何根据用户代理切换代理?

我的目标是,所有IE6都使用特定代理,其余的只使用默认代理。

背景:IE6不支持在默认代理上使用的Kerberos身份验证。因此,我使用LDAP身份验证设置了一个额外的代理。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

也许在一个人可以发现的浏览器之间存在一些不那么微妙的javascript引擎差异,例如使用
if (typeof(someIESpecificFunction) != "undefined")
或者使用try和catch
或比较一些内置函数的结果以获得细微的差异

http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(ECMAScript)http://www.robertnyman.com/javascript/index.html可能对您有所帮助吗?

更新:还有一个特定于浏览器版本的行为:

来自http://technet.microsoft.com/en-us/library/dd361918.aspx

    function FindProxyForURL(url, host)
    {
        if(weekdayRange("WED", "SAT", "GMT"))
            return "PROXY proxy:80";
        else
            return "DIRECT";
    }

weekdayRange(< day1> [,< day2>] [,< GMT>])函数返回当前系统时间是否落在参数< day1>,<第2天>和< GMT>。只需要第一个参数。 GMT参数设置GMT而不是本地时区的时间。

注意使用< day1>调用函数的位置==< day2>,以前版本的Internet Explorer会产生与Netscape Navigator结果不同的结果。具体来说,以前版本的Internet Explorer会将此日期范围解释为整周,而Internet Explorer 6和Netscape Navigator将该范围解释为一天。 例如,如果当前日期是星期一,则调用weekdayRange(“TUE”,“TUE”)在以前版本的Internet Explorer上返回TRUE,在Internet Explorer 6和Netscape Navigator上返回FALSE。

更新2:根据http://blogs.msdn.com/b/wndp/archive/2006/07/18/ipv6-wpad-for-winhttp-and-wininet.aspx,应该能够将IE7与旧的IE版本区分开(其他浏览器可能也可能不支持这些扩展,例如此处提到的有关Chrome的内容:http://code.google.com/p/pactester/issues/detail?id=9

根据目前的信息,应该可以区分IE 5.5,IE 6,IE 7,IE 8,IE 9吗?

如果您发现任何有用的内容,请告知我们。

答案 1 :(得分:0)

您可以尝试通过Conditional Compilation检测PAC脚本中的IE:const ifIE = /*@cc_on!@*/false; 条件编译可能因新的或旧的IE / Edge版本而异。

我还没有对此答案进行任何测试 - 请告诉我们是否可以在评论中使用。

相关问题