所以用户代理可以伪造..好的...有没有一个正当的理由我不应该使用php来检测浏览器?

时间:2012-04-20 22:42:33

标签: php css dynamic-css

我从来没有理解为什么有些人说为每个浏览器制作自定义css是件坏事。为了保持我的页面大小和下载时间的快速,我完全有理由为主要浏览器(特别是IE以其多种不同的形式)制作自定义css,并且一般性地捕获所有其他的css。

如果你想发出一个臃肿的,巨大的,瑞士军刀的css世界,在所有情况下,然后前进我不会阻止你。

执行此操作时,快速检测浏览器非常重要。加载JavaScript文件以检测浏览器似乎很慢。所以我宁愿使用php来检测浏览器,并发出指定的css。或者至少一般浏览器特定的css然后使用JavaScript加载更详细的css版本。

但我已经读过一篇文章,说明为什么这是一件坏事。每篇文章背后的主要原因是因为用户代理可以伪造。或者使用Firefox,但服务器认为他们正在使用IE7,因此它发出了错误的css文件。

作为网络应用程序的开发人员/设计人员,为什么这是我的问题?如果你想使用Firefox,但是告诉我的服务器使用safari或IE *,并且看到一个糟糕的页面,为什么这是我的问题?

如果用户看不到你的网站,他们永远不会回来,或者某种类似的争论,请不要扔掉整个。普通用户不会这样做。它只会是知道如何做到这一点的人,并且当我的网站看起来很糟糕时会知道什么是错的。

这类似于在旧的Apple II上查看我的网站(我不知道如何),并对我大吼大叫,因为一切看起来都是绿色的。

那么有一个很好的理由,而不是个人偏好,为什么我不应该使用php来检测浏览器并发送自定义的CSS文件?

我主要针对不同版本的IE进行此操作。它似乎对某些网站来说,添加if IE6,如果IE7部分只是css文件大小的两倍或三倍。

5 个答案:

答案 0 :(得分:2)

通常,当用户故意伪造用户代理字符串时,这是因为在用户的浏览器中无法查看某些内容。例如,某些网站可能会将用户限制为IE或Firefox,但用户在Debian上使用Iceweasel。 Iceweasel只是一个因商标原因重命名的Firefox(还有一些其他的更改),因此没有理由该网站不起作用。

意识到这会发生因为(坏)浏览器检测,而不是它。我会说你不需要非常担心这个问题。此外,如果您可以让您的网站合理地跨浏览器兼容,那么根本不重要。如果确实想要使用特定于浏览器的CSS,并且您不想在一个CSS文件中这样做,请不要让假的用户代理阻止您。

答案 1 :(得分:1)

只要您正在做的唯一事情是更改样式表,就我所知,没有正当理由。如果您尝试通过浏览器提供自定义安全措施,那么您将遇到问题。

答案 2 :(得分:1)

不确定php,但在Rails中,基于用户代理提供css文件和不同布局是正常且简单的做法,特别是在考虑到您的网站可能被无数可用的移动设备访问时设备,不要介意为最流行的(目前的Firefox)浏览器编写,甚至在需要时编写自定义MIME类型也很简单。

IMO没有这样做是对编码员的纯粹懒惰部分,但并非所有网站都是由具有造型大师的专业开发团队开发的。同样在Rails以外的语言中,它可能不那么简单。对不起,我对PHP没有任何线索,所以这可能不是一个合适的回复

答案 3 :(得分:1)

在我看来,从normalize.css开始,并开始使用基本样式表,根据需要覆盖基本样式通常可以确保设置适当的回退。如果您真的需要少数媒体查询,并且功能检测可以有很长的路要走。

答案 4 :(得分:0)

您不应该偏离浏览器的一个原因是Google和Yahoo等主要搜索引擎禁止为不同的浏览器显示不同的内容。 GoogleBot可以检测到不同的CSS和HTML,并且您可能会获得糟糕的搜索定位。此外,如果您使用任何广告服务,您可能会通过显示不同的内容来违反合同。