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

标签 html forms browser back-button form-data

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

清除时和不清除时都找不到任何连接。

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

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

但他们都绝对错了。我见过在浏览器返回后保留表单数据的网站(比如我自己的网站)并且正在使用 https 并且正在使用 session 。

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

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

最佳答案

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

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

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

Some answers i found on the internet / stackoverflow:
1. on https connections, forms are always cleared
2. when using dynamic websites with sessions, forms are always cleared

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

假设 #2 肯定不是在所有情况下都成立(我刚才描述的模式利用 session 和动态表单)。

关于html - 为什么单击浏览器后退按钮时有时会清除 HTML 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10511581/

相关文章:

javascript - 在对话框打开时重置 Vuetify 表单

html - IE中div定位问题

javascript - 如何通过计算表单中选中复选框的数量来填充 HTML 文本框?

css - 我怎样才能给输入样式标题背景?

html - 如何仅输出带值的下拉菜单(并给它们命名)- Contact Form 7

javascript - 使用 javascript 替换浏览器 ctr + n 默认处理程序?

html - vw 和 vh 单位如何工作?

javascript - 监听浏览器回流事件

jquery - 我网站上的所有悬停效果都已停止工作

html - 获得 SSL,现在所有请求的文件都被阻止(混合内容)