为什么浏览器不在后退按钮历史记录中保留状态 302 页面?

OJF*_*ord 6 browser http-status-code-302

当对 HTML 页面的请求响应 HTTP 302 Found(又名“临时重定向”)时,FireFox 会“就地”加载重定向页面,而不会将最初打开的 URL 保留U在“后退按钮历史记录”中。

一种流行的用途302(以及正确使用代码,我认为)似乎是重定向到一个/cookieAbsent页面,提醒用户他们的浏览器不“支持”(用户可能更可能禁用了)cookie。

这种浏览器行为的后果是,如果用户决定启用 cookie,重新加载当然只是重新加载(服务器无法可靠地将您发回,如果它愿意的话/cookieAbsent这是不好的,并且后退按钮返回打开(无论是通过超链接还是键入)原始U. 这对我来说是有意义的301 Moved Permanently(又名“永久重定向”),但似乎不受欢迎302,尤其是像这样使用时。

如果我正在实现一个浏览器 - 或者,也许,希望报告现有浏览器中的错误或功能请求 - 这种行为是通用规范所要求的,还是仅仅由浏览器来做它认为合适的事情?

Lep*_*eus 6

您可以在 mozilla bugtracker 上找到 20 年前(!)的这个非常相关的错误

理由的简短摘要似乎是他们这样做是因为某些网站显然以错误的方式使用 302 作为重定向路径

/product?limitedtimetoken 
302 to 
/product?superproduct 
302 to 
/superproduct 
Run Code Online (Sandbox Code Playgroud)

有些人习惯了不保存的“错误”行为,并用它来假装安全

/checkauth 
302 to 
/connected?gotoaccount 
302 to 
/account
Run Code Online (Sandbox Code Playgroud)

虽然将这些保存在历史中是“技术上正确的”,但对于最终用户来说,保存所有这些中等 url 是错误的行为,因为那些是假的 302,在现实中总是会重定向。

如果您曾经遇到过“我的浏览器的后退按钮不起作用,它总是向后前进”的情况,您有时会发现有时很容易理解他们的推理。

他们提到这也是 IE 和 Netscape 所做的,尽管我找不到它们的原因(但我认为这基本相同:将所有这些都保存在历史记录中对最终用户来说是不利的)。

顺便说一句,撤消“此更改”是没有意义的 - 此更改是正确的修复..您是对的,有问题的站点正在做错误的事情,但我们仍然应该解决这个问题。

此补丁使 mozilla 的行为与 Netscape 4x 和 IE wrt 在全局历史记录中存储重定向 url 的行为相同。并且重要的是,我们也实施此行为,因为(不幸的是)许多站点已经成长为某种程度的感知安全性。这个事实不是一朝一夕就能改变的,在这个问题上不妥协也无助于 Mozilla 的声誉。