1

我目前面临一个非常不一致的问题。基本上,我的应用程序中有一个浏览器检测例程,它将嗅探任何传入请求的用户代理,如果它来自受支持的浏览器,那么它将继续加载应用程序。但如果它不受支持,则会重定向到“Notsupported.html”。

几个月前我写这段代码的时候。它在我的机器上运行良好。我上交了它,它在 Dev Server 上运行良好。在测试服务器上很棒。没有人见过这个问题。

现在,一旦移植到实际环境,当用户第一次加载它时,有时它会加载浏览器不支持的页面,并且用户的机器已经空闲了一段时间。有时也不要闲着一会儿。它只是随机发生,但在机器闲置一段时间或机器刚刚重新启动后,会更频繁地注意到发生。但不能保证它一定会发生。

我很确定 Production 有许多与其他环境不同的设置,但我不知道为什么它无法检测到生产机器中的浏览器,而不是其他任何地方。我正在尝试重现问题,但它完全不可重复。

有任何想法吗?

4

3 回答 3

3

用户代理不是确定客户端正在使用的浏览器的一种非常可靠的方法,因为它们可以被用户修改。更好的方法是专门检测浏览器是否支持您的应用程序需要的功能,例如modernizr

于 2012-08-02T22:51:31.000 回答
0

在 IE 中它可以与兼容模式链接。如果ie处于竞争模式,它会发送关于自己的非常奇怪的信息

于 2012-08-03T05:12:16.953 回答
0

它只是随机发生

计算机的好处是它们从不随意做任何事情:)

您提供的有关如何检测浏览器的信息很少。你用的是什么代码?你支持哪些浏览器?哪些用户代理被错误重定向?

还要记住,许多应用程序会更改用户代理,例如宣传机器上存在的 .NET 版本。这可能会导致错误匹配。

于 2012-08-02T22:50:50.720 回答