【问题标题】:Why are HTML forms sometimes cleared when clicking on the browser back button为什么单击浏览器后退按钮时有时会清除 HTML 表单
【发布时间】:2012-05-17 16:51:11
【问题描述】:

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

清空时找不到任何连接,什么时候没有。

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

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

但是他们两个肯定是错的。我见过网站(比如我自己的网站)在浏览器返回 并且 使用 https 并且 使用会话之后确实保留了表单数据。

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

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

【问题讨论】:

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


    【解决方案1】:

    我无法为所有场景提供明确的答案。

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

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

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

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

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

    【讨论】:

    • 感谢您的回答。当然,你的做法是完全正确的。但这有时需要做很多工作(特别是如果您之后需要添加此行为)。如果只有浏览器可以完成这项工作,生活就会轻松得多。这是我的问题的目标。有没有办法让浏览器完成这项工作!?
    【解决方案2】:

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

    【讨论】:

    • 好的,当它是一个浏览器问题时:什么浏览器的行为如何?例如。移动Safari?如果是这样,如何让浏览器表现得像我想要的那样? (保留数据)
    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 2012-11-08
    • 1970-01-01
    • 2016-12-25
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多