之前写过无数次get和post请求,但实际上不是很明了他们之前的区别,只是大概知道类型的区别,携带参数不同,以及携带参数大小的不同,今儿突然发现好像不是那么简单,研究一下。
get和post最明显的区别就是,get把参数写在url种,而post则是把参数写在request body种,并且他们的大小也有区别。
下面看一下官宣:
在这个说几个概念:http协议是指客户机(通常是浏览器)和服务器之前应答所需要遵循的原则,规范。tcp/ip则是网路种的传输协议。
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
- GET - 从指定的资源请求数据。
- POST - 向指定的资源提交要被处理的数据
从以上概念大概能得出一个结论,即get侧重于要数据,而post则侧重于交数据。
下面是官方get和post的区别:
1.GET 请求可被缓存 <=> POST 请求不会被缓存
2.GET 请求保留在浏览器历史记录中 <=> POST请求不会保留在浏览器历史记录中
3.GET 请求可被收藏为书签 <=> POST 不能收藏为书签
4.GET 请求长度有限制 <=> POST 请求没有限制
5.GET请求不能处理敏感数据
上面的大可不必死记,只需记住它们各自的侧重点特点就行。get侧重获取,且参数可见,那他必然可以缓存,记录,书签,不能存贮敏感。post因有敏感数据则不能记录,缓存,收藏。
之前都是一些表层的东西,咱们看下底层原理方面的东西(有参考其他博文)
get和post其实没有底层实现没有太大区别,what?
HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。 (这句话是借用)
意思是:get和post的底层实现都是一样的,至于他们的区别只是各个浏览器和服务器后台约定的设置不同而已。
那么get和post请求的区别来历就很明确了,是浏览器和服务器的处理方式不同而已,发展到后台,大家一看不行啊,你用你的,我用我的,你的我用不了,我的你用不了,这不利于世界和平啊,没走可持续发展道路,所以大家商量一下,就约定的get和post的一些用法区别。
post为了在网路中保密特性,会发两次传输请求。这大概像地下工作者接头,现派一个不重要的小跟班接触一下,发现,哎,是他是他就是他,然后再把机密文件给他。
这样在网络不好的情况下,尽量使用get请求,因为它干净、利落、脆,额,扯远了,因为它只需要一次就好,节省时间,可以优化请求速度。