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

Ger*_*ald 14 html browser forms form-data back-button

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

当它被清除时,我找不到任何连接.

我在internet/stackoverflow上找到的一些答案:

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

但他们两个都是绝对错误的.我看过网站(比如我自己的网站)确实在浏览器恢复之后保留了表单数据,并且正在使用https 正在使用会话.

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

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

Tim*_*ora 8

我不能为所有场景提供明确的答案.

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

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

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

我相信#1因浏览器/安全设置/场景而异.

在所有情况下,假设#2肯定不正确(我刚刚描述的模式利用了会话和动态形式).