我正在使用 $_SERVER['HTTP_USER_AGENT'] 来检测用户的浏览器。
当我在 IE8 上的本地主机上运行 var_dump 时,它返回:
...兼容的;微星8.0; ...
但是当我将其上传到我的主机(godaddy)时,我得到:
...兼容的; MSIE 7.0; ...
有什么问题?
我正在使用 $_SERVER['HTTP_USER_AGENT'] 来检测用户的浏览器
是的,这就是问题所在。不要那样做。
User-Agent
字符串黑客是一场失败的游戏。有许多奇怪的情况可能会使您的脚本感到困惑。
这是其中之一:IE8 在默认兼容模式时会伪装成 IE7。您可以通过以下情况检测到这种情况Trident/...
在字符串中,但当然像所有字符串黑客“解决方案”一样,如果该字符串由于其他原因而恰好存在,那么这会出错,这可能是因为任何应用程序都可以将任意字符串粘贴到 IE 用户的末尾代理标头,事实上,考虑到浏览器经常谎报自己的身份,中介机构可能会更改或删除标头。
另外,通过在服务器端进行浏览器嗅探,您的 HTTP 响应取决于查看它们的浏览器,这意味着代理缓存将为错误的浏览器提供错误的页面,除非您包含正确的内容Vary
标头。但如果这样做,就会破坏 IE 中的缓存。
服务器端 UA 嗅探是一种可怕的行为,只有当确实无法使用任何其他技术时,才应将其作为最后的手段。对于向特定版本的 IE 显示不同内容的常见情况,使用条件注释会更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)