post和get本质上都是tcp链接,并无差别,但是由于http的限制和浏览器限制,导致他们在使用过程中会出现差别
- post在浏览器中可以带请求体
- get在浏览器中请求体为空,在node环境中可以发请求体
所以在浏览器中get和post的区别有
- get可以通过url传递参数,post可以用
url或request body传递参数 - get请求可以缓存,post请求不能缓存
- get可以进行url编码,post可以进行多种编码传输
- get请求的参数会保存在浏览器的历史中,post不会
- get的大小最多为2k,post没有限制
- get只接收ASCII字符,post没有限制
- 浏览器回退时get是无害的,post会再次发送请求
- 在发送数据包时get会把header和data一起发送出去,然后服务端响应200,而post会先发header,服务端响应100,再发data,浏览器响应200