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