我如何明确地在重新加载时不重新发送表单?

我如何明确地在重新加载时不重新发送表单?

提交表单后尝试重新加载/刷新页面时,会出现以下弹出窗口:

在此处输入图片描述

但它只有 2 个选项:继续或取消。如果我想重新加载,但不重新提交表单?

答案1

嗯,你真的不能。这完全取决于网站的编码方式。即使你能做到,你的会话也可能会失败。

有时您可以做的是将光标放在浏览器地址栏中并按回车键。这通常会导致您被重定向到另一个页面,但是,如果网站编码正确,则会导致您与服务器的会话处于不稳定状态,否则,这不会是您真正想要的情况。

您收到该消息是因为您的浏览器发送的是 POST 而不是 GET。

默认情况下,浏览器会重新发送最后发送给服务器的命令的状态,在本例中恰好是 POST,其结果是一个文档;也就是您希望重新加载的文档。

当多个页面链接在一起形成一个多步骤提交(“向导”)时,这种情况很常见。跨多个页面保存状态信息(例如步骤 #2 中输入的帐单地址)需要 cookie、服务器端会话内存和表单值等内容。

表单值是个问题,因为它们不是通过 GET 提交的,所以如果您使用 GET 刷新页面,信息就会丢失,而不是使用包含生成已加载页面所需信息的 POST(或在服务器端的会话内存中设置)。

第二次提交表单通常有两个问题。第一个危险是服务器上已经进行了处理,再次请求执行该处理是不好的(例如两次订购同一件商品)。

第二个原因是,由于您发帖,数据可能会在服务器端累积,并且您可能会重复该数据。这类似于将某件商品添加到购物车一次,但发现有两个实例。由于这种情况发生异常,超出了应用程序的预期流程,开发人员可能无法解释数据的异常状态,从而导致某种故障或执行操作的次数超过预期。

相关内容