浏览器检测在生产环境中不能始终如一地工作

时间:2012-08-02 22:46:08

标签: asp.net-mvc http redirect web browser-detection

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

几个月前我写这段代码的时候。它在我的机器上工作得很好。我把它打开了,它在Dev Server上运行得很好。伟大的测试服务器。从来没有人看到过这个问题。

现在,一旦将其移植到实时环境,有时它会在用户第一次加载并且用户的计算机闲置一段时间时加载浏览器不支持的页面。有时它不会闲置一段时间。它只是随机发生,但是在机器闲置一段时间或机器刚刚重启后更频繁地注意到噪声。但不能保证肯定会发生这种情况。

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

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

用户代理不是确定客户端使用的浏览器的非常可靠的方法,因为用户可以修改它们。更好的方法是专门检测浏览器是否支持您的应用程序使用modernizr等服务所需的功能。

答案 1 :(得分:0)

  

它只是随机发生

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

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

另请注意,许多应用程序会更改用户代理,例如,广告计算机上存在的.NET版本。这可能会导致错误的匹配。

答案 2 :(得分:0)

在IE中,它可以与兼容模式链接。即在兼容模式下,它会发送有关自我的非常奇怪的信息