从三个层面的区别:
http报文层面 | GET将请求信息放在URL,POST放在报文体中 |
数据库层面 | GET符合幂等安全性,POST都不符合 |
其他层面 | GET可以被缓存、被存储,而POST不行 |
* 由于get请求将请求信息放在url中,因此对数据有长度限制(http对url没有限制,但是一些浏览器对url长度有限制)
* post请求的请求信息在报文体中,没有长度限制。由于post的请求信息是明文存放在报问中,极易被获取,因此安全层面,get和post 都是不安全的。
* 指对数据库的一次操作和多次操作获得的结果是一致的则认为符合幂等性
* 指对数据库的操作没有改变数据库的数据则认为符合安全性
* get请求会被保存在浏览器的浏览记录中,get的url可以保存为浏览器书签;而post不具备这种功能
* 缓存是get被广泛利用的根本,在网络是大部分的请求是巨大的,并且绝大部分是读请求;如果所有的请求都交由web服务器去处理会造成巨大的资源浪费;get请求是幂等的安全的,绝大部分get请求会被cdn缓存,这样大大降低了web服务器的负担;而post的非幂等所以必须交由web服务器处理。