计算机网络总结(1)——GET和POST 的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaojie_570/article/details/87296715

1. GET 和 POST 的区别

【注意】HTTP没有要求,如果Method 是POST,数据就要放在BODY中。也没有要求 Method 是GET,数据就一定放在 URL 中而不能放在 BODY中。

GET 和 POST 是HTTP 协议中的两种发送请求的方法。 HTTP是什么呢? HTTP 是基于 TCP/IP 的关于数据如何在万维网上通信的协议。HTTP 底层是 TCP/IP,所以 GET 和 POST 的底层也是 TCP/IP。

=============================================================================

【区别一】

  • GET 参数是通过 URL 传递
  • POST 放在 request body中

下面用生动形象的例子来说明 GET 和 POST 之间的区别。

在万维网的世界中,TCP就像是汽车,我们用TCP 来运输数据,它很可靠,从来不会发生丢件少见的现象。但是,如果路跑的全部是看起来一模一样的汽车,那么送急件的汽车可能被前面的汽车堵在了路上,导致急件不能运输到目的地。为了避免这种情况发生,交通规则 HTTP 诞生。HTTP 给汽车分类了,设定了几个不同的服务级别,有 GET 、POST、PUT、DELETE等。

  • HTTP规定,当执行 GET 请求的时候,要给汽车贴上 GET 标签,而且要求把传送的数据放在车顶上(URL中)。
  • 当执行POST请求的时候,要给汽车上贴上POST标签,并把货物放在车厢里。

=============================================================================

【区别二】

但是我们在运输过程中,是对运输量有限制的(参数的大小)

在万维网的世界中,还有另一个角色:运输公司。不同的浏览器(发起http请求)和服务器(接收http请求)就是不同的运输公司。理论上,你可以在车顶上无线的放货物(url中无限加入参数)。但是运输公司可不傻,装货和卸货都会花费很大的成本,(大多数)浏览器通常会限制URL长度为 2K 个字节,(大多数)服务器最多处理 64K 大小的url。超过的部分,不会处理。

=============================================================================

【区别三】

GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。

  • 对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送过去,服务器响应 200(返回数据)
  • 对于 POST 方式的请求,浏览器会先发送 header,服务器响应 100(continue),浏览器再发送 data,服务器响应ok(返回数据)

=============================================================================

【区别四】

get 比post 更不安全,因为参数直接暴露在 URL 中,所以不能用来传递敏感信息。
get 请求会被完整的保存在浏览历史记录中,post 中的参数不会被保留。

参考并感谢

[1] https://www.cnblogs.com/logsharing/p/8448446.html

猜你喜欢

转载自blog.csdn.net/xiaojie_570/article/details/87296715