GET和POST请求的区别
语义上,使用上,本质上
1 语义上的区别
一般来说GET是获取数据,POST是提交数据的。但是因为GET和POST都是HTTP的方法,HTTP协议既然有了这两个方法,就是为了在特定的情况下区分应用。就有了我们所说的GET是获取数据,POST是提交数据的。
2 使用上的区别
GET参数通过URL传递,POST放在Request body中,GET参数直接暴露在URL上,所以不能用来传递敏感信息;
GET请求只能进行url编码,而POST支持多种编码方式;
对参数的数据类型,GET只接受ASCII字符,而POST没有限制;
GET请求在URL中传送的参数是有长度限制的,而POST没有(浏览器和服务器限制的);
GET是获取数据,所以GET请求是安全、幂等、是无害的,POST是向服务器传输数据,数据会被重新提交,POST回退时可能会对服务器产生影响;
GET请求会被浏览器主动cache,而POST不会,除非手动设置;
3 产生数据包的区别
GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
(并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次)
3 本质上的区别
本质上都是TCP链接,没有区别