get和post的相关知识

上一篇 / 下一篇  2016-12-21 22:06:08 / 个人分类:网络

   在使用Charles和fiddler等抓包工具的时候,会遇到很多的请求,那么看接口请求的时候,get和post请求方式的掌握是很重要的。
    今天看到一个特别好理解的讲解,http是基于TCP/IP的关于数据如何在万维网中如何通信的的协议,举个很形象的例子:在万维网中,TCP就像汽车,使用TCP来运输数据,而HTTP就像是运输过程中的交通规则,常见的规则GET,POST,PUT,DELECT等等。HTTP规定当执行GET请求的时候,要给汽车贴上GET的标签,并且要求把传送的数据放在车顶里,而POST是放在车厢里。同时还有一个重要的角色,那就是运输公司,即浏览器的角色,不同的浏览器(发起不同的http请求)和服务器(接收http请求)就是不同的运输公司。浏览器会对运输的数据量进行限制,数据量太大会对浏览器和服务器都是有很大负担的,业界不成文规定是,大多数浏览器通常都会限制url长度在2K个字节,而大多数服务器最多处理64K大小的url,超过的部分,不予处理。
    HTTP即超文本传输协议是先到网络中最常见和常用的协议之一,设计它的目的是保证客户机和服务器之间的通信,http的工作方式是客户端和服务器之间的“请求相应”的协议,通常情况下,由浏览器向服务器发起http请求,服务器向浏览器返回相应,相应包含了请求的状态信息以及可能被请求的内容,请求的方式有以下几种方式 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT。其中最常见的两种http请求就是get和post,get是从服务器上获取数据,一般用于获取或者查询资源,post则是向指定的资源提交要被处理的数据,一般用于更新资源信息。下面是get和post的几点区别:
    1、请求报文的格式不同
    get请求的数据会附在url之后,就是把数据放在http协议头中,以?分割url和传输数据,参数之间以&相连。post则是把提交的数据放置在http包的包体中。
    2、提交的数据量不同
    get方式提交的数据最多只能是1024个字节,因为get是通过url提交数据,那么get可提交的数据就和url的长度有着直接的关系啦。但是实际上url不存在参数上的限制问题,http协议规范没有对url的长度进行限制,这个限制是特定的浏览器以及服务器对它的限制。IE对url的限制是2083字节。
    理论上post是没有限制的,http协议规范也没有进行大小限制,但是IIS4默认最大为80k,IIS5默认为100k,但是这个值是可以修改的。
    3、安全性方面
    post的安全性要比get的安全性高。
    4、产生的数据包不同
    GET产生一个TCP数据包,POST产生两个TCP数据包,详细来说,对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器相应200(返回数据);而对于POST,浏览器会先发送header,服务器相应100continue,浏览器再发送data,服务器相应200(返回数据)。也就是说,GET只需汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“(。・∀・)ノ゙嗨,我等下要送一批货来,你们打开门迎接我”。然后再回头去运货。所以POST需要的时间要长一些。
    但是需要注意:
      1、GET和POST都有自己的语义,不能随便混用。
      2、据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视,而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
      3、并不是所有的浏览器都会在POST中发送两次包,Firefox就只发送一次。


   哈哈,你get了吗??











   


TAG: 知识

 

评分:0

我来说两句

Open Toolbar