后退按钮(浏览器行为)

Posted

技术标签:

【中文标题】后退按钮(浏览器行为)【英文标题】:Back Button (Browser Behavior) 【发布时间】:2010-12-13 01:38:42 【问题描述】:

在网络浏览器中按下后退按钮时,默认操作是发送获取请求还是从浏览器历史记录中提供服务?

如果特定于浏览器,Internet Explorer 和 Firefox 的默认操作是什么?

【问题讨论】:

好问题,添加评论以记住阅读答案。 【参考方案1】:

非正式回答

如果上一页是GET request,则通常会从浏览器的缓存中获取该页面,除非页面上的缓存时间已过期(此过期时间由网页管理员设置),或其他因素导致浏览器认为信息不够新鲜。

如果上一页是POST request,浏览器通常会询问您是否要重新发送信息,然后从服务器获取页面。

正式答复

这在浏览器应实现的HTTP Protocol specification 中的Section 13 中进行了介绍。

具体而言,13.10 规定:

某些 HTTP 方法必须导致缓存 使实体无效。这是 该实体所指的实体 请求 URI,或按位置或 Content-Location 标头(如果存在)。 这些方法是:

  - PUT
  - DELETE
  - POST

可能会缓存其他类型的请求(例如 GET)。如果您想了解详细信息,请通读完整规范,但规范的设置方式允许浏览器尽可能多地使用其缓存。

【讨论】:

【参考方案2】:

我只是为了好玩而在 Chrome 和 Firefox 中测试了这个

当我在 Google 搜索页面上的 Chrome 中按回时,没有请求发生。浏览器从缓存中拉取。

在 Firefox 中,我实际上从 Google 获得了 204 No Content,路径为 http://clients1.google.ca/generate_204。

我使用Charles 代理发现了这个,所以它不科学:)

【讨论】:

以上是关于后退按钮(浏览器行为)的主要内容,如果未能解决你的问题,请参考以下文章

使用浏览器后退按钮时如何强制重新加载页面?

Flutter Web 中的路由有意外行为

具有适当后退按钮支持的 jQuery 灯箱

jquery mobile+html5 写的页面 如何禁用手机后退按钮。或者说如何禁用页面后退。

如何用jQuery禁用浏览器的前进后退按钮

防止页面后退(使浏览器后退按钮失效)