Get和Post请求中的重新加载/历史行为?

时间:2013-06-29 01:58:30

标签: java web-applications post get httprequest

我通过http://www.w3schools.com/tags/ref_httpmethods.asp阅读 关于阅读vs post.Here是描述

enter image description here

为了清除混淆,我只是采用用户在第1页创建客户的方案(使用提交按钮)和 导航到成功页面(第2页)。

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

  

我对两个请求(GET / POST)的理解都会重新提交数据   。因此在客户场景中,将在用户时创建两个客户   按F5在页面上是否发布或获取。所以按照我的意见   理解,数据将在GET / POST请求中重新提交   没有一个是无害的。请纠正我的理解,如果它是错的?

历史点。在GET请求中说“参数保留在浏览器历史记录中”和POST请求  “参数未保存在浏览器历史记录中”。我的问题是如果请求参数没有保存  邮件请求中的浏览器历史记录,如何在成功页面上单击F5复制客户。他们存储了吗?  在其他位置而不是帖子请求中的浏览器历史记录?

1 个答案:

答案 0 :(得分:0)

我会尝试逐点解释:

关于GET无害:方法GET被置于de idempotent,这意味着:给定相同的url和相同的参数,它总是应该返回相同的结果(user = 34,date = 01- 07-2013应该返回相同的页面)并且不应该改变任何东西(只做一种带有“user”和“date”的查询)。当然,违反此规则并实际更改内部状态(执行更新等)是很常见的,这就是您提到的情况(第1页 - >第2页创建内容)。 POST请求没有该要求,而是用于更改内部状态。

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