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次,对资源状态的改变效果是等价的。