HTTP请求中get和post区别
GET 方法
- GET 请求可被缓存
- GET 请求保留在浏览器历史记录中
- GET 请求可被收藏为书签
- GET 请求不应在处理敏感数据时使用
- GET 请求有长度限制
- GET 请求只应当用于取回数据
POST方法
- POST 请求不会被缓存
- POST 请求不会保留在浏览器历史记录中
- POST 不能被收藏为书签
- POST 请求对数据长度没有要求
1.get请求是通过url直接请求数据,数据信息可以在url中直接看到,比如浏览器访问;而post请求是放在请求头中,我们是无法直接看到的
2.数据传输大小:get提交有数据大小限制,一般是1024字节,而这种说法也不完全准确,http协议并没有设定url字节长度的上限,而是浏览器做了处理,所以长度依据浏览器的不同而有所不同,post请求在http协议中没有做说明,一般来说是没有设置限制的,但是实际上浏览器也有默认值,总体来说,少量的数据使用get,大量的数据使用post
3.参数传递方式及安全性:get请求因为数据参数是暴露在url中,所以安全性比较低,比如密码是不能暴露的,就不能使用get请求;post请求中,请求参数信息是放在请求投的,所以安全性较高,可以使用,在实际中,涉及到登录操作的时候
4.缓存机制:get在浏览器回退时无害的,而post会再次提交请求
5.编码:get请求只能进行url编码,而post支持多种编码方法
6.缓存机制:get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留
7.url参数传递长度:get强求在url中传送的参数是有长度限制的,而post没有
9.安全性:get比post更不安全,因为参数直接暴露在url中,所以不能用例传递敏感信息
10.参数传递:get参数通过url传递,post放在request body中
11.数据包:get产生一个tcp数据包,post产生两个tcp数据包
12.请求发送过程:GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200
POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次
13.本质:get和post本质上就是tcp链接,并无差别,但是由于http的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同
14.比喻【tcp汽车,运输数据,如果都是汽车,世界混乱,http就诞生了,http给汽车运输设定了几个服务类别,有get,post,put,delete等,get在车顶堆货,post是车内放货,浏览器属于运输公司,http只是个行为准则】