Get和Post请求还是有比较明显的不同的。在Web服务器设计和前后端交互中,需要比较熟悉地掌握这两个请求的区别,才能更加方便地进行接口设计和实现,下面记录了我自己了解和查阅资料知道的一些概念。
Get和Post的区别
-
Get请求一般用于请求获取数据;
Post一般用于发送数据到后端服务器。 -
Get请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的;
Post请求传递参数放在Request Body中,不会在url中显示,更安全,且参数长度无限制。 -
Get请求刷新浏览器或回退时没有影响;
Post回退时会重新提交数据请求 -
Get请求可被缓存;
Post请求不会被缓存 -
Get请求保留在浏览器历史记录中;
Post请求不会保留在浏览器历史记录中 -
Get请求可被收藏为书签;
Post不能被收藏为书签 -
Get请求只能进行url编码(application/x-www-form-urlencoded);
Post支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。) -
Get请求比较常见的方式是通过url地址栏请求;
Post最常见是通过form表单发送数据请求
更多理解
-
Post请求和Get请求都是HTTP的请求方式,本质上来说并无区别,底层实现都是基于TCP/IP协议。 Get产生一个TCP数据包;Post产生两个TCP数据包。- 对于
Get请求,浏览器会把http-header和data都发送出去,服务器响应200(返回数据); - 对于
Post请求,浏览器先发送header,服务器响应100 CONTINUE,浏览器再发送data,服务器响应200 OK(返回数据)。
- 对于
-
Get与Post都有自己的语义,不能随便混用。 - 并不是所有浏览器都会在
Post请求中发送两次包,Firefox就只发送一次。