【问题标题】:Spring Framework - Difference between GET and POSTSpring Framework - GET 和 POST 的区别
【发布时间】:2012-12-24 14:40:58
【问题描述】:

我正在使用 Spring Framework 在 JSP 上开发网页,如果页面使用 POST 操作发送,我通常知道 GET 和 POST 之间的区别;在浏览器区域,发送的信息似乎没有,而在 GET 中则相反。

在 spring 框架中,我通过控制器发送和获取信息,就在编写控制器之前,我使用请求映射;

@RequestMapping(value = "/pri/SuperUser/ResetPassword.qib",method = RequestMethod.GET)
@Override
public ModelandView function(Model model){
...
...

那么,在这种情况下使用 GET 和 POST 有什么区别。除了在浏览器字段中查看发送的信息之外,应该还有其他不同的东西。

【问题讨论】:

  • 请先搜索。 Wikipedia 和 who-knows-what-else 涵盖了 HTTP GET/POST 之间的基本区别(听起来不像上面描述的那样)。同样,与 REST 等一起使用的“适当的 HTTP 动词”也是如此。
  • 你可以查看 RequestMethod 的源代码,这与 spring 没有任何关系

标签: java spring spring-mvc


【解决方案1】:

听起来你还没有完全理解 GET/POST。

尝试在 Web 应用程序中这样想:

获取 应使用 GET 方法从服务器检索数据。对同一个 URL 的多个 get 请求应该是有效的,并且不应在服务器端更改任何数据。

然而,这并不意味着不能让 GET 请求改变服务器端的东西,但您应该尝试确保您遵循标准。

发布 当您需要在服务器端创建、更新或删除数据时,应使用 POST 方法。多次发出相同的 POST 请求可能不安全,并可能导致数据不一致。 POST 请求的内容在请求正文中发送。因此,您在浏览器中看不到参数,但如果您愿意,很容易看到它们(即使使用浏览器开发人员工具),因此它并不比 GET 请求更安全。

注意:这是它们在 WEB 上的一般使用方式,它不是实际规范,因为还有其他可用方法。如果您正在创建 REST 服务,您将需要探索其他方法

(简而言之 - POST - 用于创建数据,PUT - 用于更新数据,DELETE 用于删除数据)

可能值得阅读实际规范以获得完整的理解:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

如果您确实想保护您的 HTTP 请求,那么这可以通过 HTTPS 使用 SSL 加密来完成(一个单独的主题)

【讨论】:

    【解决方案2】:

    GET - 安全、幂等且可缓存

    POST - 没有这些特征

    查看:GoogleDevelopers Link(视频)

    【讨论】:

    【解决方案3】:

    该方法只接受使用 GET 的方法。您不能 POST 到此 URL。

    您将获得标准差异,例如您发送此端点的数据将在 ?var=value 之后显示在浏览器 URL 中

    因此您可以向...yoururl.com/pri/SuperUser/ResetPassword.qib 执行获取请求

    【讨论】:

    • POST 也可以使用 URI 的 查询字符串,通过 AJAX 的 GET 根本不会显示在浏览器位置。
    • 是的,这是真的,但我认为如果将 POST 发送到 OP 发布的 URI,Spring Framework 不会处理请求?
    • 你是对的,它只映射了 GET 动词。我只是指出一些细节。
    • 谢谢,但是我应该怎么做才能使用 POST 而不是 GET 来发送这些数据?
    【解决方案4】:

    如果您的数据是机密的,最好使用 POST 方法,因为它不会反映在 url 上,不像 GET

    【讨论】:

    • 嗯,这“有点”是真的。 1)如果数据是机密的,更重要的是使用 HTTPS 2)在记录/缓存敏感信息方面,使用查询字符串的 POST 并不比 GET 更安全。
    【解决方案5】:

    与一般情况相同。 RequestMapping 处理 GET 或 POST 发送的数据。

    例如如果您在浏览器中输入“DOMAIN/pri/SuperUser/ResetPassword.qib”并打开 URL,它就是 GET。

    如果您从 HTML 页面使用 POST 方法提交表单,则它是 POST

    【讨论】:

    • 并非所有表单都使用 POST。 <form action='somepage.jsp' method='GET'></form>
    • @LoganDam 同意。表单也可以有 GET(或 PUT 或 DELETE)方法
    • 那你答案的If you submit form from HTML page it's POST位是不正确的。
    猜你喜欢
    • 2011-02-20
    • 2015-05-28
    • 2011-04-08
    • 2015-08-03
    • 1970-01-01
    • 2011-03-05
    • 2011-03-29
    相关资源
    最近更新 更多