今天登录 SDMB(也尝试了 try.discourse.org),我收到了以下消息:
很抱歉,您的浏览器太旧,无法在此网站上运行。请升级您的浏览器以查看丰富内容、登录和回复。
然而,我使用的是最新版本的浏览器 SeaMonkey 2.53.13,该版本仅在四天前发布。Discourse 可能选择不支持它,但说它“太旧”而无法与 Discourse 配合使用是错误的。事实上,如果我覆盖浏览器的 User-Agent 字符串,我会发现一切似乎都能正常工作。
问题似乎出在 Discourse 的 User-Agent 嗅探不准确。默认情况下,SeaMonkey 的 User-Agent 字符串会宣传 Firefox 兼容性:
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0 SeaMonkey/2.53.13
如果我通过“编辑->首选项->高级->HTTP 网络->用户代理字符串->标识为 SeaMonkey”将 User-Agent 字符串更改为隐藏 Firefox 兼容性,那么 SeaMonkey 就可以再次访问 Discourse 网站,而不会出现任何明显问题:
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 SeaMonkey/2.53.13
我理解 Discourse 可能不希望支持 SeaMonkey 这样不再主流的浏览器,但如果这些浏览器不被主动阻止访问 Discourse 网站就好了。即使这些浏览器被主动阻止,Discourse 也不应该报告一个错误的阻止原因。
请改进 User-Agent 嗅探,使其在决定用户代理是否“太旧”之前检查字符串的末尾。(我怀疑它目前只是查找受支持浏览器的名称和版本,而不管它们在 User-Agent 字符串中的位置。)毕竟,您并没有因为浏览器在字符串开头报告旧版本的 Mozilla 而阻止它们,那么为什么还要因为它们在字符串中间报告旧版本的 Firefox 而阻止它们呢?
如果出于某种原因更改嗅探算法是不可取或不切实际的,那么请在检测到所谓的“不兼容用户代理”时更改行为:不要(可能错误地)告诉用户他们的浏览器“太旧”并阻止进一步访问,而是告诉用户他们的浏览器“不受支持”,并链接到支持的浏览器列表,但让他们选择继续使用他们现有的浏览器。
依我看,这很可能与Discourse检查用户代理的方式有关。Seamonkey不应该有一个Firefox头选项,如果它要显示一个与Discourse不兼容的旧版本Firefox的话。这很可能是Seamonkey方面糟糕的计划,而不是Discourse的问题。
2 个赞
通常,Duecourse 会尝试通过功能检查而不是用户代理(UA)嗅探来检测不支持的版本。
最近,Firefox 旧版本中的 composer 出现了一个问题,迫使他们使用 UA 嗅探,因为如果你询问某些版本的 Firefox,它们会愉快地(并且在技术上准确地)表示支持必要的功能,但实际上它们存在 bug 且无法正常工作。
这里的问题是,Seamonkey 默认告诉网站它与比它实际兼容的版本 早得多 的 Firefox 版本兼容。
在这种情况下,Discourse 的做法是正确的。
4 个赞
我认为事情并非如此简单。特定版本的 SeaMonkey 会宣传与特定版本的 Firefox 兼容,因为这两个浏览器版本共享相同的核心代码库。通常可以认为,该版本的 SeaMonkey 至少可以执行该版本的 Firefox 所能执行的所有操作。除了这种核心兼容性之外,特定版本的 SeaMonkey 可能还支持后期版本的 Firefox 所支持的某些功能,但不一定全部支持。因此,SeaMonkey 明确宣传与后期版本兼容是不真实的(也通常无益)。
简而言之,仅仅因为一个新浏览器宣传与一个旧浏览器兼容,并不意味着新浏览器不支持更新的功能。同样,如今大多数浏览器都宣传与 Mozilla/5.0 兼容,但这并不意味着它们严格限于该旧引擎的功能。
david
(David Taylor)
6
您能否尝试打开编辑器,看看粗体/斜体按钮是否能正常工作?这是我们早期 Firefox 版本遇到的问题。
1 个赞
Falco
(Falco)
7
另一种替代UA嗅探的方法是检测window.visualViewport功能,这可以匹配(89 → 91)接近的Firefox版本。也许我们可以切换到这个?但我们仍然需要添加一个绕过Safari 12.5的补丁,直到一月份 
“您能试试打开编辑器,看看粗体/斜体按钮是否正常工作吗?这是我们在旧版 Firefox 中遇到的问题。”
我可以确认,在 SeaMonkey 2.53.13 中,这些按钮目前对我来说无法正常工作,但在 Firefox 100.0.2 中可以正常工作。我以前从未尝试过使用它们,因为我总是直接用 Markdown 编写。
既然您提到了,在 meta 上的 SeaMonkey 中,回复按钮也无法正常工作,但在 boards.straightdope.com(运行在 hosted-by-discourse.com 上)上却可以正常工作。
1 个赞
不是按字面意思,因为我的浏览器“不旧”,我也不需要“升级”它。你至少应该把措辞改为:“您似乎正在使用不受支持的浏览器。请切换到受支持的浏览器以查看丰富内容、登录和回复。”
4 个赞
sam
(Sam Saffron)
11
好的,我同意更新文案,“old”确实带有评判意味,而且 Lynx 仍在积极开发中。
3 个赞