美文网首页
HTTP中GET和POST的区别

HTTP中GET和POST的区别

作者: 朽木小白_fly | 来源:发表于2017-10-26 17:39 被阅读0次

一、论点


1.Get用于信息获取,http协议要求安全性和幂等性,Post请求用于更新和修改服务的资源,不具有幂等性;

2.两者本质上都是TCP/IP协议链接,并无差别,只是由于http的相关规定、浏览器、服务器等的限制,导致在使用过程中体现出一些常见的不通点;

二、详述


1.关于幂等性

首先什么是幂等性?

Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.

在HTTP协议1.1中,有以上这段话,简而言之,即对于某个资源请求,无论请求1次或者N次,对于资源产生的副作用应该是一样的。

从这个概念上就很容易理解,Get请求是幂等性的,无论请求多少次,返回的结果是一致的,而Post,请求一次则会产生一份新的资源,并不满足幂等原则。需要注意的是,Put请求也是幂等性的。

PUT请求是我们不太常接触到的HTTP请求协议之一,PUT请求之后完成对于资源的修改,由A修改为B,而多次请求,最终结果还是合并到B资源,从此角度理解,PUT请求设计师满足幂等操作的。

2.关于TCP协议

两者本质都是基于TCP链接,这个其实很好理解,HTTP协议是面向于应用层,而传输层则是TCP协议,平时常说的socket则是对TCP/IP协议的封装,可以理解为一个API,通过API使用TCP/IP协议。因此可以这么说,TCP/IP协议提供了一种通信能力,是HTTP协议的基石,而HTTP协议则是提供了一种具体的实现方式。

3.常见区别

那我们通常看到的Get和Post请求的区别,大致区别如下:

1.参数传递:Get请求相关参数直接可以放置在url中,而Post请求相关参数则封装到http包体中;

2.传输数据大小:HTTP协议对Get和Post没有明确限定,对于Get url长度的限制取决于服务器和浏览器,对于Post数据包的大小取决于服务器;

3.数据包:GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。【对于firefox浏览器一次发送Post两个tcp包需要验证】。

以上。

三、参考文献


1.http://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html;

2.http://blog.csdn.net/happy_xiahuixiax/article/details/72859762;

3.https://yq.aliyun.com/articles/49156

相关文章

网友评论

      本文标题:HTTP中GET和POST的区别

      本文链接:https://www.haomeiwen.com/subject/fkvhpxtx.html