计算机网络第七弹——GET和POST的格式以及区别

涉及到是否有抓包经历。GET和POST是我们常用的两种HTTP方法,可以使用wireshark抓取HTTP的get和post请求。

GET和POST格式是怎样的?

一个HTTP请求报文分为四部分:请求行,请求头,空行,请求数据(body主体):

1.请求行:由请求方法字段、URL字段、和HTTP协议版本字段3个字段组成,如:POST http://127.0.0.1:8001/ HTTP/1.1\r\n (其中\r\n代表换行)

2.请求头:从第二行开始,以(key-value)对组成,以\r\n换行符结尾,每一行的内容都是一个请求头参数值,直到遇到一个空行为止,典型的请求头有:

  • User-Agent:产生请求的浏览器类型。
  • Accept:客户端可识别的内容类型列表。
  • Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

3.空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。在实际抓包中就是(\r\n),即请求头和请求体中间隔着一行空行作为分界

4.请求数据(body 主体):请求数据不在GET方法中使用,而是在POST方法中使用,即GET方式的请求没有请求数据,是将参数追加到URL后面的,URL中?后面的内容为请求参数,而POST则四个部分都有POST 方法适用于需要客户填写表单的场合,与请求数据相关的最常使用的请求头是Content-Type 和 Content-Length,用于指定请求数据的类型和长度。

(在wireshark中使用 http.request.method=="GET" 命令可进行查询过滤)


注:因为get请求参数一般都用ascii编码到url中,所以不含请求数据(request-body),当然你也可以强行放到request-body里面。


GET和POST的区别:

GET和POST最主要的区别是:GET用于请求获取数据,而POST是向指定的资源创建修改数据。最直观的区别是GET把参数包含在URL中,POST通过请求体传递参数,所以GET更安全。而且GET的url长度是有限制的(2048个字符),POST无限制。


总结如下:

  1. GET在浏览器回退时是无害的,POST会再次提交请求
  2. GET产生的URL地址可以被Bookmark,而POST不可以
  3. GET请求会被浏览器主动cache,而POST不会,除非手动设置
  4. GET请求只能进行url编码,而POST支持多种编码方式
  5. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
  6. GET请求在URL中传送的参数是有长度限制的,而POST没有
  7. 对参数的数据类型,GET只接受ASCII码,而POST没有限制
  8. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息,如密码
  9. GET参数通过URL传递,POST放在request body中

以上都是表面上的区别,如果往深层次思考,GET和POST都是HTTP协议中的两种发送请求的方法,而HTTP是基于TCP/IP的关于数据如何在万维网中能够通信的协议,即底层是TCP/IP,所以GET和POST的底层也是TCP/IP,也就是说GET/POST都是TCP连接,GET和POST所做的事是一样的,如果要给GET加上request body,给POST加上URL参数,技术上是完全行得通的。只是HTTP的规定对GET和POST加上的“行为准则”:“GET将需要传送的数据放在url中,POST将参数放在请求体中”。而TCP才是GET和POST怎么实现的基本,他们本质上都是TCP连接。如果使用GET服务,在request body偷偷藏了数据,不同的处理器处理方式不同,有的会读取数据,有的服务器会直接忽略,即不一定能被接收到。

至于GET传送参数有长度限制,是因为业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url,超过的部分不会处理。

另一个很重要的区别是:GET产生一个TCP数据包,POST产生两个TCP数据包。即:GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器在发送data,服务器响应200(返回数据)。因为POST需要两步,时间上消耗的要多一点,所以GET比POST效率要高。但是在网络环境差的情况下,两次包的TCP在验证数据包完整性上,更具有优势。

参考自:点击打开链接  点击打开链接

猜你喜欢

转载自blog.csdn.net/n1neding/article/details/80859117