Get、Post区别

参考:https://www.cnblogs.com/coderwcb/p/16090602.html

区别

  • 语义不同,GET是获取数据,POST是提交数据。
  • GET请求会把附加参数带在URL上,而POST请求会把提交数据放在报文内。
  • post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
  • post发送的数据更大(get有url长度限制)
  • post能发送更多的数据类型(get只能发送ASCII字符)
  • get比post慢,GET 是会被浏览器主动缓存的,如果下一次传输的数据相同,那么就会返回缓存中的内容,以求更快地展示数据。
  • post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

为什么Get比Post块

post请求包含更多的请求头

  • 因为post需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如:content-type),这其实是微乎其微的。

post产生两个TCP数据包

  • GET 方法只产生一个 TCP 数据包,浏览器会把请求头和请求数据一并发送出去,服务器响应 200 ok(返回数据)。
  • POST 方法会产生两个 TCP 数据包,浏览器会先将请求头发送给服务器,待服务器响应100 continue,浏览器再发送请求数据,服务器响应200 ok(返回数据)。
    post请求的过程:
    (1)浏览器请求tcp连接(第一次握手)
    (2)服务器答应进行tcp连接(第二次握手)
    (3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
    (4)服务器返回100 Continue响应
    (5)浏览器发送数据
    (6)服务器返回200 OK响应
    get请求的过程:
    (1)浏览器请求tcp连接(第一次握手)
    (2)服务器答应进行tcp连接(第二次握手)
    (3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
    (4)服务器返回200 OK响应

get会缓存数据

post不能进行管道化传输

Get传参长度限制

  • http协议并未规定get和post的长度限制
  • get的最大长度限制是因为浏览器和web服务器限制了URL的长度
  • 即使get有长度限制,也是限制的整个URL的长度,而不仅仅是参数值数据长度,http协议从未规定get/post的请求长度限制是多少
  • 不同的浏览器和web服务器,限制的最大长度不一样
  • 要支持IE,则最大长度为2083byte,若支持Chrome,则最大长度8182byte
posted @ 2024-04-30 11:11  hasome  阅读(3)  评论(0编辑  收藏  举报