http:post和get的区别
表面区别:
1.get的请求参数放在url的后面,而post的参数放在body中
2.get传送的数据量较小,主要受url长度限制;post传输的数据量较大
3.post的安全性比get高,因为post的请求参数放在body中用户不可见;而get参数放在url中用户可见
4.post请求会发两次两次请求,而get只会发一次请求
实际区别:
get和post都是tcp协议,两者实际没有什么区别。get也可以用body传输参数;post也可以将参数放在url中进行传输。
两者不同之处在于定义:
get定义为读取一个资源,可以反复读取并且返回的数据一样,具有幂等性
post定义为向服务器发送请求让服务器处理,一般不具备幂等性。
其两者本质上没有什么区别,只是我们人为统一定义的区别。规范一个请求格式。让开发人员知道这个请求下该去哪获取请求参数(当然你也可以不遵守定义,自己怎么方便怎么弄,当然特立独行并不能代表统一定义,大部分人还是遵守统一定义的)
post发两次请求,是客户端为了提高数据吞吐和降低带宽浪费上所作的一个优化。当传输的数据超过一定量时,可以先发一个请求头的请求来判断这个请求是否合法可以请求,当服务器判断该请求正常会回复客户端100状态码让客户端将剩下的数据发送给服务器进行处理。这样可以避免大数据量的请求一次发送到服务器,请求不合法服务器拒绝请求导致浪费带宽传输请求体。所以发几次请求并不是http方法决定了,而是客户端根据实际情况决定可以灵活的决定请求发送的次数。当用get方法携带body请求体(一般不建议这样处理,统一请求格式)进行请求时也可以发送两次请求