为什么在单击浏览器后退按钮时有时会清除HTML表单

时间:2012-05-09 07:27:19

标签: html forms browser back-button form-data

我相信每个人都知道这种行为。您在网上填写表格,然后提交。提交后,您认识到您填写了一些错误的数据。所以,你点击浏览器后退按钮。然后,有时表单仍然包含您输入的数据(您希望在这种情况下),有时不会。

清除时,我没有找到任何连接。

我在网上找到了一些答案/ stackoverflow:

  • 在https连接上,表单始终被清除
  • 使用带有会话的动态网站时,表格始终被清除

但他们两个都是绝对错误的。我看过网站(比如我自己的网站)在浏览器返回并且使用https 正在使用会话后保留表单数据。

所以请:有人可以解释一下浏览器是如何处理这些东西的吗?

顺便说一下:我的任务是确保表单数据清除。

3 个答案:

答案 0 :(得分:7)

我无法为所有情况提供明确的答案。

作为一名网络开发人员,以下是我开发的网站通常遵循的规则,以实现不让用户丢失数据的目标:

  • 禁用要保留的页面上的所有缓存(通过HTTP标头)。
  • 在提交表单时将所有数据捕获到会话(或其他一些临时存储)中。
  • 如果用户向后导航,浏览器会请求新版本的页面(因为您将其设置为永不缓存)。
  • 该页面具有查看会话/数据库/任何位置的逻辑,并根据最后一个输入状态重新填充所有字段。如果页面上有动态输入,则应该有足够的数据来重新创建它们。
  • 完成此过程后,使用POST / Redirect / GET模式清除会话数据,使用户难以返回原始页面。
  

我在网上找到了一些答案/ stackoverflow:
   1.在https连接上,表格总是被清除
   2.使用带会话的动态网站时,表格总是被清除

我认为#1因浏览器/安全设置/方案而异。

假设#2在所有情况下都不是真的(我刚才描述的模式利用会话和动态表单)。

答案 1 :(得分:2)

这是一个浏览器问题。单击后退按钮时,浏览器的行为会有所不同。 这个问题在此之前被问到Losing form data when clicking the back button on browser

答案 2 :(得分:0)

我觉得有趣的是,你提供的链接在此之前被提出但是那个人说这个链接是由这个回答的。哦,也没有接受的答案......