内容不保证正确性
对比项/HTTP方法 | GET | POST | PUT | DELETE | HEAD | OPTIONS | PATCH | CONNECT | TRACE |
---|---|---|---|---|---|---|---|---|---|
请求数据长度 | URL长度限制,通常2KB-8KB,取决于浏览器 | 无限制,取决于服务器处理能力 | 无限制,取决于服务器处理能力 | 无限制,取决于服务器处理能力 | 无请求体 | 无请求体,只询问支持的方法 | 无限制,取决于服务器处理能力 | 建立隧道,TCP连接 | 回显请求,主要用于测试 |
请求回退 | 可回退(安全方法) | 不可回退(不安全方法) | 不可回退(不安全方法) | 不可回退(不安全方法) | 可回退 | 可回退 | 不可回退(不安全方法) | 不适用 | 不适用 |
对服务器的区别 | 只获取资源,不修改服务器状态 | 可能引起服务器状态变化或副作用 | 替换目标资源的所有当前表示 | 删除指定的资源 | 只获取响应头,不获取响应体 | 询问服务器支持的方法 | 对资源进行部分修改 | 建立隧道,TCP连接 | 回显请求,主要用于测试 |
缓存 | 可缓存 | 默认不可缓存(可以通过特定头部使其可缓存) | 通常不可缓存 | 通常不可缓存 | 可缓存响应头 | 不缓存 | 通常不可缓存 | 不适用 | 不适用 |
浏览器历史记录 | 可保存在浏览器历史记录中 | 不保存在浏览器历史记录中 | 不保存在浏览器历史记录中 | 不保存在浏览器历史记录中 | 可保存在浏览器历史记录中 | 不保存在浏览器历史记录中 | 不保存在浏览器历史记录中 | 不保存在浏览器历史记录中 | 不保存在浏览器历史记录中 |
URL编码 | 参数通过URL传递,需要URL编码 | 参数在请求体中,不需要URL编码 | 参数在请求体中,不需要URL编码 | 参数在请求体中,不需要URL编码 | 不适用 | 不适用 | 参数在请求体中,不需要URL编码 | 不适用 | 不适用 |
数据包 | 只发送一个TCP包,数据在URL中 | 发送请求头和请求体两个TCP包 | 发送请求头和请求体两个TCP包 | 发送请求头和请求体两个TCP包 | 只发送一个TCP包,数据在URL中 | 只发送一个TCP包,数据在URL中 | 发送请求头和请求体两个TCP包 | 建立隧道,TCP连接 | 发送请求头和请求体两个TCP包 |
底层原理 | 浏览器发送时,会先发送请求行和请求头,再发送数据(如果有) | 浏览器发送时,会先发送请求行和请求头,再发送请求体 | 浏览器发送时,会先发送请求行和请求头,再发送请求体 | 浏览器发送时,会先发送请求行和请求头,再发送请求体 | 浏览器发送时,会先发送请求行和请求头 | 浏览器发送时,会先发送请求行和请求头 | 浏览器发送时,会先发送请求行和请求头,再发送请求体 | 建立隧道,TCP连接 | 浏览器发送时,会先发送请求行和请求头,再发送请求体 |
实际行为因服务器实现不同有差异。例,缓存行为因服务器发送的缓存控制头字段(如Cache-Control)而有所不同。此外,对于安全性和幂等性的分类,也取决于具体的使用场景和服务器实现。