【问题标题】:Browser detection does not work consistently in production environment浏览器检测在生产环境中无法始终如一地工作
【发布时间】:2012-07-31 23:33:23
【问题描述】:

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

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

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

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

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 好吧,承认用户代理不是最可靠的方法,用户可以更改浏览器。我们是当下的用户。我们的团队正在测试它,我们看到了这个问题。一个主要区别是生产环境在小伙子平衡器后面,而其他环境则不在。我还没有建立负载平衡器和浏览器检测失败之间的因果关系。
    【解决方案2】:

    只是随机发生

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

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

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

    【讨论】:

    • HttpRequest.Browser.Majorversion 是我用于浏览器检测的,那当然是服务器端。What user-agents are being falsely redirected? 正如我所说,有时 Chrome,有时 IE,Mozilla,safari 是真正的随机行为。我不认为问题出在客户端或任何特定的用户代理有问题我认为它与服务器上的某些东西有关,并且我们还无法识别。
    • 我指的是完整的用户代理字符串,而不仅仅是哪个浏览器。它可能会提供一个线索,为什么它在某些(目前看似随机的)情况下错误地检测到浏览器。
    • 用户代理字符串是什么意思?
    • 浏览器在请求中发送的内容。喜欢显示在useragentstring.com
    • 哦,好的。我们目前唯一的用户代理字符串痕迹是 IIS 日志,我们不知道其中哪些转发到浏览器不受支持,哪些处理正常。除非我们在生产机器上安装 Visual Studio 并运行项目并在运行时跟踪它失败,否则我们可以说这就是用户代理字符串失败时的样子。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 2021-08-01
      • 1970-01-01
      • 2021-09-20
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      相关资源
      最近更新 更多