get和post区别
首先
- get 把参数包含在URL中,post 则是通过request body(请求体)中传递参数
- get 只能进行url编码,post 支持多种编码方式
- get 使用 url 传输的数据长度是有限的,而 post 可以传输的数据长度是没有限制的
- get 在浏览器回退时是无害的,而 post 会再次提交
- get 请求会被浏览器主动缓存,而 post 不会,除非手动去设置。
其次
- 实际上 get 和 post 是没有大的区别,因为都只是 HTTP 协议中两种发送请求的方法。
- HTTP 是基于 TCP/IP 协议的关于数据如何在万维网中如何通信的协议
- HTTP 的底层是 TCP/IP 。所以 get 和 post 底层也是 TCP/IP ,也就是说 get 和 post 都是 TCP/IP 连接,get 和 post 所做的事是一样的。如果想在get加上request body 或者给post 加上 url 参数,技术上完全可行。
最后
- 重点重点
- get 只产生一个TCP数据包,而 post 会产生两个TCP数据包
对于 get 方法,浏览器会把 http header 和 data 一并发出去,服务器响应为200ok,返回数据
而 post ,浏览器先发送 header ,服务器响应 100 continue ,浏览器再次发送 data ,服务器响应 200 ok ,返回数据