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

Configuration PAC(代理自动配置)navigator.appName不可用,configuration,proxy,pac,Configuration,Proxy,Pac,我已经有了一个proxy.pac文件。我希望客户端根据其web浏览器使用不同的proxyserver 没问题,我想。有许多java脚本片段,用于检测浏览器名称/版本 我找到的示例使用了all navigator.appName。如果我在一个普通的网站上测试的话,效果很好。当我把它放进proxy.pac时,它就不起作用了。导航器对象似乎不存在 有没有人建议如何根据用户代理切换代理 我的目标是,所有IE6都使用一个特定的代理,其余的只使用默认代理 背景:IE6不支持在默认代理上使用的Kerberos

我已经有了一个proxy.pac文件。我希望客户端根据其web浏览器使用不同的proxyserver

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

我找到的示例使用了all navigator.appName。如果我在一个普通的网站上测试的话,效果很好。当我把它放进proxy.pac时,它就不起作用了。导航器对象似乎不存在

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

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

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


提前感谢您的帮助。

也许您可以发现浏览器之间存在一些不太明显或更微妙的javascript引擎差异,例如 如果某些特定功能的类型!=未定义 或者使用try-and-catch 或者比较一些内置函数的结果以获得细微的差异

这可能有助于一个开始

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

发件人:

weekdayRange[,][,]函数返回当前系统时间是否在参数指定的范围内,以及。只有第一个参数是必需的。GMT参数以GMT而不是本地时区设置时间

请注意,在使用==调用函数的地方,早期版本的Internet Explorer将产生不同于使用Netscape Navigator的结果。具体来说,以前版本的Internet Explorer将把这一天的范围解释为一整周,而Internet Explorer 6和Netscape Navigator将这一范围解释为一天。例如,如果当前日期是星期一,则调用weekdayRangeTUE,TUE在早期版本的Internet Explorer上返回TRUE,在Internet Explorer 6和Netscape Navigator上返回FALSE

更新2:根据一个人应该能够区分IE7和旧版IE,其他浏览器可能支持也可能不支持这些扩展,比如这里提到的Chrome:

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


如果您发现任何类似的有用信息,请告诉我们。

您可以通过:const-ifIE=/*@cc\u on尝试检测PAC脚本中的IE@*/错误的 根据新的或旧的IE/Edge版本,条件编译可能会有所不同


我还没有对这个答案做任何测试-,请在评论中告诉我们它是否有效。

很抱歉回复太晚。我做了一个变通,因为我发现没有一个解决方案能正常工作。我将浏览器指向一个PHP脚本proxy.PHP,该脚本解析用户代理头并为ie6发送一个proxy.pac,为所有其他文件发送一个proxy.pac。
    function FindProxyForURL(url, host)
    {
        if(weekdayRange("WED", "SAT", "GMT"))
            return "PROXY proxy:80";
        else
            return "DIRECT";
    }