在过去的几年里,我有时会遇到无法在 Linux 上的 Firefox 中运行的网站,我试图了解原因,这样我就可以通过含糊不清的“它不能”来通知所有者工作”。
现在这当然会发生。虽然大多数 Web 开发人员都在 Firefox 中进行测试,但没有多少人会在 Linux 上的 Firefox 中测试他们的产品,而且有些人真的不在乎。有些只针对 Chrome/Webkit 而根本不用 Firefox。 但这不是这个问题的目的。
这里有一些东西让我怀疑在看似无关的网站上重复存在一个根本原因,我怀疑一些重复的配置代码或网络内容服务库或应用程序会这样做。有点可疑。
问题
受影响的网站仅返回纯 HTML 消息,其中包含请求的任何资源的 403 HTTP 状态代码;它看起来像这样:
Forbidden
You don't have permission to access / on this server.
这些网站确实在以下情况下工作:
- 操作系统不是 Linux 发行版
或
- 浏览器不是Firefox
示例网站
虽然我通常不会包含指向其他人网站的链接,但在这种情况下我会这样做,因为它是医生办公室的网站。除了迫在眉睫的危及生命的紧急情况(在这种情况下,当然应该调用国家紧急电话号码),任何患者都应该随时可以访问这些网站,以便在需要时提供联系信息。
此网站显示上述症状:https://www.huisartsenpraktijkdehaan.nl/
虽然网站变多了,但模式总是一样的。
user-agent
字符串
不过,尝试找出真正导致这种情况的原因似乎很简单。如果我将 user-agent
字符串更改为 Chrome 的字符串,它就可以工作。
所以我的初步结论是,这纯粹是用户代理驱动的错误/功能。
一些进一步的测试产生了这个:
这些工作
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36
Foo
Mozilla/5.0 (X11; Ubuntu; x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
Mozilla/5.0 (X11; Ubuntu; inux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
Mozilla/5.0 (X11; Ubuntu; Linu x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
Mozilla/5.0 (X11; Xubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
X11; Ubuntu; Linu
X11;Ubuntu;Linux
11; Ubuntu; Linux
这些不起作用
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
X11; Ubuntu; Linux
x11; ubuntu; linux
假设
具有文字字符串X11; Ubuntu;请求的
(不区分大小写,但按原样包含空格和分号)会触发损坏的行为。user-agent
HTTP header 中的 Linux
难题
当然,我可以联系这些网站的所有者(最终我会这样做),但有一个问题。他们可能不会在 Linux 上使用 Firefox(因为你会注意到你自己的网站坏了),如果他们将消息传递给维护或构建网站的人,响应很可能是“很好,它适合你,而且它对我有用,该用户必须有一些古怪的病毒缠身的计算机和带有 Bonzy Buddy 工具栏的古老浏览器”,或类似的东西。
所以我想要更多的弹药,最好是一个我可以向任何拥有此类网站的人解释的原因。更好的办法是找出发生这种情况的原因,并从源头上解决它。
那么这里发生了什么?一些 Apache 的 Nginx 模块/配置/插件是由真正讨厌在 Linux 上使用 Firefox 的人编写的?一些奇怪的错误在多个站点上重复出现?
有人认出这种奇怪的网站行为吗?
最佳答案
我在转发的电子邮件中看到这篇文章的链接。
ErrorDocument 503 "Your connection was refused"
SetEnvIfNoCase User-Agent "X11; Ubuntu; Linux" bad_user
Deny from env=bad_user
在 .htaccess 中设置为阻止“WP 登录机器人”,因为我自己使用 Ubuntu,这很容易复制。
关于linux - 某些网站仅在 Linux 上的 Firefox 中返回禁止响应(尽管将用户代理更改为 Chrome 是可行的);常见的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66185885/