2

我通过http://www.w3schools.com/tags/ref_httpmethods.asp阅读了有关阅读与帖子的信息。这是描述

在此处输入图像描述

为了消除混淆,我只是假设用户在第 1 页(使用提交按钮)创建客户并导航到成功页面(第 2 页)。

对于重新加载(比如用户在成功页面上按 F5)点,Get 请求被认为是无害的,在 post 请求中“数据将被重新提交”。

我对这两个请求(GET/POST)的理解,数据将被重新提交。因此在客户场景中,当用户在页面上按 F5 时将创建两个客户,无论是发布还是获取。因此,根据我的理解,数据将在 GET/POST 请求中重新提交,并且没有一个是无害的。如果有错误,请纠正我的理解?

对于历史点。在 GET 请求中说“参数保留在浏览器历史记录中”,对于 POST 请求“参数不保存在浏览器历史记录中”。我的问题是,如果请求参数没有保存在发布请求的浏览器历史记录中,如何在成功页面上单击 F5 重复客户创建。它们是否存储在其他位置而不是发布请求中的浏览器历史记录?

4

1 回答 1

1

我将尝试逐点解释:

关于 GET 是无害的:方法 GET 被认为是幂等的,这意味着:给定相同的 url 和相同的参数,它总是应该返回相同的结果(user=34,date=01-07-2013 应该返回相同的页面)和不应该改变任何东西(只做一种带有“用户”和“日期”的查询)。当然,打破此规则并实际更改内部状态(进行更新等)是很常见的,这就是您提到的情况(page1 --> page2 创建某些东西)。POST 请求没有该要求,旨在更改内部状态。

关于浏览器历史记录中剩余的参数:它们真正的意思是,在 GET 请求中,参数包含在 URL 本身(mysite.com?user=34,date=01-07-2013)中,所以如果你保存 URL,你也会保存参数。在 POST 请求中,参数进入请求正文而不是 URL 的一部分;所以你是对的,旧的浏览器过去只存储 URL,现在浏览器经过优化,可以将这些 POST 参数存储在内部缓存中。

于 2013-06-29T02:39:59.137 回答