简易版
数据/参数在哪里:
- GET 是通过 URL 方式请求,可以直接看到,明文传输
- POST 参数数据被包含在请求体中。通过 header 传输,同样是明文。但比直接显示在URL中安全多了
对数据长度的限制:
- GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。
- http 协议并未规定 get 和post 的长度限制
- get 的最大长度限制是因为浏览器和 web 服务器限制了 URL 的长度
- 不同的浏览器和web服务器,限制的最大长度不一样
- 超出了最大长度,大部分的服务器直接截断,有些服务器会报414错误
- POST 没有限制
是否会缓存:
- 浏览器会缓存和记录 GET 请求及参数(这一点不是很安全,如参数中包含敏感信息可能被其他从浏览器的缓存和浏览记录获取)
- 不缓存 POST 的请求的参数
是否会修改服务器内容(= 幂等性 Idempotent ?):
- GET 只读服务器数据不会修改; 幂等简单理解就是每次请求结果和产生的影响都一样
- POST 请求可能会导致新的资源的建立和/或已有资源的修改