GET和POST的区别

    xiaoxiao2025-07-18  5

    当看到这个问题时,大多数人想到的是这张图中的信息 但是实际上,get和post是HTTP中两种发送请求的方法,而HTTP我们大家都知道,是基于TCP/IP协议的关于数据如何在万维网中通信的协议,也就是说get和post的底层也是TCP/IP,所以从根本上来讲,get和post是没有区别的。


    它们之间在用法上的区别就是get用于请求数据,post用于修改数据。 还有get产生一个TCP数据包,post产生两个TCP数据包。


    网络上争议比较大的地方在于首部Expect: 100-continue的区别: HTTP协议中设计100 (Continue) HTTP 状态码的目的是在客户端发送请求之前,协议允许客户端先判断服务器是否愿意接收来自客户端发来的消息主体(基于Request Headers)。

    客户端策略:如果客户端有post数据要上传,可以考虑使用100-continue协议,在请求头中加入 {“Expect”:”100-continue”},但是并不是所有server都会正确实现这种协议。服务器端收到这个请求后返回100或错误码,如果在返回之前就收到了post的主体数据,则不发送100响应码

    https://zhuanlan.zhihu.com/p/25028045中又指出:

    不论哪一种浏览器,在发送post的时候都没有带Expect 头,server 也自然不会发 100 continue。通过抓包发现,尽管会分两次,body 就是紧随在 header 后面发送的,根本不存在『等待服务器响应』这一说。


    HTTP协议中明确指出,HTTP头和body都没有长度的要求,URL长度上的限制主要是由服务器和浏览器造成的。 HTTP也没有要求,如果是POST,数据就要放在BODY中。也没有要求GET,数据(参数)就一定要放在URL中而不能放在BODY中。

    最新回复(0)