14

我相信每个人都知道这种行为。您在网络上填写表格,然后提交。提交后您发现您填写了一些错误的数据。因此,您单击浏览器的后退按钮。然后,有时表单仍然包含您输入的数据(您在这种情况下希望得到的数据),有时则没有。

当它被清除时,我找不到任何连接,什么时候没有。

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

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

但他们两个肯定是错的。我已经看到网站(就像我自己的网站一样)在浏览器返回后保留表单数据使用 https使用会话。

所以请:谁能解释一下浏览器是如何处理这些东西的?

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

4

2 回答 2

9

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

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

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

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

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

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

于 2012-05-09T07:31:57.490 回答
2

它是一个浏览器问题。单击后退按钮时,浏览器的行为会有所不同。在点击浏览器上的后退按钮时丢失表单数据之前曾问过这个问题

于 2012-05-09T07:33:40.153 回答