1.作用不同:GET是用来获取服务器资源的;POST是用来向服务器提交资源的;
2.参数传递方式不同:GET请求参数一般写在URL中的,只能接收ASCII字符;POST的参数是放在请求体中的,对数据类型没有限制。
3.安全性不同:GET请求的参数暴露在URL中,是不安全的,不能用来传递敏感信息。
4.参数长度限制不同
GET请求传送的数据量比较小,一般不超过2KB
POST请求传送的数据量较大,一般被默认不受限制。
5.编码方式不同
GET请求只能使用URL编码
POST请求支持多种编码方式
6.缓存机制不同
GET请求会被浏览器主动缓存,但是POST不会,除非进行手动设置
GET请求参数会被完整保存在浏览器历史记录中,而POST中的参数不会被保留
GET生成的URL地址可以被保存为书签,而POST不可以。
7.时间消耗不同
GET请求产生一个TCP数据包
POST产生两个TCP数据包
因为GET请求,浏览器会一次将header和data一并发出去,服务器响应200(返回数据)
POST请求的话,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
8.幂等
GET方法是安全且幂等的。因为GET是一个只读的操作,无论操作多少次,服务器上的数据都是安全的,且每次结果都一样。
POST是新增或者是提交数据的操作。会修改服务器上的资源,所以是不安全的。多次提交就会创建多个资源,所以不是幂等的。