GET、POST这两种请求方式是在HTTP 1.0 里定义的。
请求方式GET和POST的区别如下表:
区分项 |
GET请求方式 |
POST请求方式 |
用途 |
向服务器请求资源数据 |
向服务器提交资源数据进行请求处理 |
数据存放 |
数据存放在请求行里的URL末尾【?&】 |
数据存放在请求体里 |
数据量 |
受限于浏览器和服务器【URL长度】 |
受限于服务器配置或内存限制 |
安全性 |
有安全性 |
没有安全性 |
幂等性 |
有幂等性 |
没有幂等性 |
链接保存 |
可以保存链接 |
不能保存链接 |
浏览器缓存 |
浏览器可以自动缓存 |
浏览器不能自动缓存,需手动设置。 |
页面刷新 |
默认可从缓存里读取【节约资源】 |
默认需重新请求【未手动设置缓存时】 |
页面后退 |
默认可从缓存里读取【节约资源】 |
默认需重新请求【未手动设置缓存时】 |
浏览记录 |
有历史记录可查 |
无历史记录可查 |
编码 |
仅支持urlencode【url编码】 |
支持多种编码 |
编码类型 |
application/x-www-form-urlencoded |
还可以是multipart/form-data等类型 |
数据类型 |
只能是ASCII码 |
没有限制,允许二进制数据传输 |
服务器日志 |
会保存参数 |
不会保存参数 |
敏感数据 |
不适合传敏感数据【参数可见于URL】 |
如果不加密,请求体里数据是明文的 |
提示:
对于HTTP请求方法有两个概念,一个是安全性,另一个是幂等性。
安全性是指不会改变资源状态,可以理解为是只读的。
幂等性是指执行1次和执行N次,对资源状态的改变效果是等价的。