HTTP中的Get和Post请求到底有什么区别?
一、HTTP中的Get和Post请求到底有什么区别?
1.HTTP诞生,是为了解决浏览器与服务器之间的通讯协议,GET用于读取资源,POST用于提交表单。
2.后来被扩充到接口格式的定义,GET和Post作为接口的请求方式。
二、协议核心四部分:
Method: get/post
Url:Url
Header:{}
Body:{}
重点1:从接口定义的角度去看,纯粹只是请求方式的差异,协议本身并没有针对两者做过多的限制。
之所以会出现get请求参数放url,post请求参数放body,是因为前后端在开发中,为了避免增加沟通成本而采取的请求规范,
例如Restful接口规范的诞生
重点2:我们偶尔会听到GET请求长度有上线,POST传输无上限?
其实并不是!
由于约定俗成,get的参数放在url中,而url长度本身受不同浏览器或服务端的限制,会稍微有些长度差异。
IE: 2048个字符
Chrome: 2M
其他浏览器也有差异,但一般比IE大。
为什么会有这个限制呢?
原因是服务端解析一个字符串时,需要分配内存,而URL必须作为一个整体去看待,没有办法分块处理,所以必须要预留一个足够大的内存,
因此各端对URL长度做了不同程度的限制,这才是GET请求有上线的底层原因。
重点3:关于安全?
Post并没有比GET请求安全。
只是由于约定俗成,get请求会只管的在URL上看到密码,post打开控制台一样能看到。
HTTP本身就是不安全的协议,请求在任何节点被劫持,都是透明的。
真的要做到安全,必须双端加密,网络上只能截取包,不能截取内容,如https