引言
交互方法
在HTTP中规定了许多与服务器进行交互的方法,如GET、POST、PUT、DELETE。其中资源描述符是URL,在这里我们可以这样理解,一个URL地址可以描述网络中的一个资源,而前面的GET、POST、PUT、DELETE所对应的分别是对这个资源的查、改、增、删。
两者的区别
最经常说的就是GET是从指定的资源获取数据,而POST是向指定的资源提交将要处理的数据。
GET
GET请求的数据会附加在URL之后,以?来分割要传输的数据,以&来分割不同的参数。数据如果是英文字母或者数字,原样发送,如果是空格,转换为+,如果是中文或者其他字符,则会把相应字符串用BASE64加密,及“%”加上“字符串的16进制ASCII码”,其可被浏览器识别,若想查看可以直接在浏览器console.log()查看。
关于长度
- GET是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。
- 实际上HTTP协议对URL长度是没有限制的;限制URL长度大多数是浏览器或者服务器的配置参数。
POST
POST把提交的数据放在是HTTP包的包体中。
效率
GET 执行效率比 POST 更高。
本质
其实从本质上来说两者都是遵从TCP协议。GET请求,浏览器会把http header和data一并发送出去,服务器响应200,返回数据。POST请求,浏览器先发送header,服务器响应100,浏览器再发送data,服务器响应200,返回数据。
可以通过下图更直观看出两者的区别
关于安全性
- 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
- POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
场景
- 当提交的数据涉及安全或隐私性数据时,建议使用 POST,比如登录操作。
- 当提交的数据量较大时,建议使用 POST,比如注册。
- 当数据量不大且不涉及安全性问题时,建议使用 GET 具体内容。
参考
简单HTTP Server的设计与实现【软件工程 SOFTWARE ENGINEERING 第20卷第1期】 周 畅,王 赜
https://www.w3school.com.cn/tags/html_ref_httpmethods.asp