GET和POST的一般区别:
- get 在浏览器回退时是无害的,post会再次发送请求。
- get 的URL地址会被BookMark,post不会
- get 的参数放在URL上,post的参数放在request body中
- 对于参数的数据类型,get 只支持ACSII字符,post没有限制
- post 要比 get 更安全,因为get 的参数暴露在URL上,不能传递敏感信息
- get 请求会被浏览器主动缓存,post不会,除非手动设置
- get 只支持URL编码,post支持多种编码方式
- get 的url中传参是有长度限制的,post没有
- get 的传递的参数会随URL保留在浏览器历史记录中,post 的参数不会被保留
Http是基于TCP/IP的将数据在万维网中进行通信的协议,HTTP的底层是TCP/IP,所以get 和post 的底层也是TCP/IP。
1、post 比 get 慢
Get 和 POST还有一个最大的区别:get发送一次TCP数据包,post发送两次数据包。
- 对于GET请求:浏览器发送get请求头和数据,服务器接收,返回200
- 对于POST请求:浏览器先发送post请求头,服务器响应,返回100 continue,浏览器再发送数据,服务器接收,返回200
这就是post比get方式慢的原因。
2、get 请求方式的参数长度限制是怎么回事?
- HTTP协议并没有规定 get 和 post 的参数长度
- 是URL长度受到限制,并不是参数数据长度受到限制
- 是浏览器和web服务器限制了URL的长度,不同的浏览器和服务器限制长度不同