为什么有时候点击浏览器的返回按钮后HTML表单会被清空

14

我相信每个人都有这样的经历。你在网页上填写一个表格,然后提交它。提交后,你发现填写了一些错误的数据。于是,你点击浏览器的后退按钮。有时候,表单仍然保留了你输入的数据(这就是你在这种情况下希望看到的),有时候则不会。

我找不到清除数据和不清除数据之间的任何联系。

我在互联网/stackoverflow上找到的一些答案:

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

但这两个答案明显是错误的。我见过像我自己这样的网站,在浏览器后退后仍然保留了表单数据,并且使用了https和session。

那么请问:任何人能够解释一下浏览器如何处理这些东西吗?

顺便说一句:我的任务是确保表单数据不会被清除。

2个回答

9
我不能为所有情况提供确定的答案。
作为一名网站开发者,以下是我通常关注的规则,以实现不让用户丢失数据的目标:
- 在你想要保留的页面上,通过HTTP头禁用所有缓存。 - 当表单提交时,将所有数据捕获到会话(或其他临时存储)中。 - 如果用户导航回退,浏览器会请求页面的新版本(因为你设置了永不缓存)。 - 该页面具有逻辑来查找会话/数据库/其他位置并基于最后一个输入状态重新填充所有字段。如果在页面上存在动态输入,则应有足够的数据来重建它们。 - 完成流程后,请使用POST / Redirect / GET模式清除会话数据,并使用户难以返回原始页面。
引用一些我在互联网和stackoverflow上找到的答案:
1. 在https连接上,表单始终被清除。 2. 使用会话和动态网站时,表单始终被清除。
我认为第一种情况因浏览器/安全设置/场景而异。
假设#2在某些情况下肯定不成立(我刚描述的模式利用了会话和动态表单)。

谢谢您的答复。当然,您的做法完全正确。但是有时候这需要相当多的工作(特别是如果您需要事后添加此行为)。如果浏览器可以完成这项工作,生活将会变得更加轻松。这就是我的问题所针对的。有没有办法让浏览器来完成这项工作!? - Gerwald

2

好的,当它是浏览器问题时:哪个浏览器会出现什么情况?例如移动Safari? 如果是这样,如何让浏览器按照我想要的方式运行?(保留数据) - Gerwald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接