【问题标题】:Reload/History behaviour in Get and Post request?获取和发布请求中的重新加载/历史行为?
【发布时间】:2013-06-29 01:58:30
【问题描述】:

我通过http://www.w3schools.com/tags/ref_httpmethods.asp 阅读 关于阅读与发布。这里是描述

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

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

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

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

【问题讨论】:

    标签: java web-applications post get httprequest


    【解决方案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 参数存储在内部缓存中。

    【讨论】:

    • 我认为您的意思是“GET 请求没有该要求,并且旨在更改内部状态。”而不是 POST 请求没有该要求,并且旨在更改内部状态。
    • 英语不是我的第一语言,所以我会尝试重新表述:GET 不应该更改/创建/删除任何内容。 POST 可以改变任何东西
    猜你喜欢
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2018-05-02
    相关资源
    最近更新 更多