POST 和 GET 的区别
POST 和 GET 的区别
前言
无论是 POST 还是 GET 请求, 都是基于 HTTP 的, 而 HTTP 协议是 TCP/IP 协议族的应用层协议
请求方法
- GET: 获取资源, 用来请求访问已被 URI (同意资源标识符, 和 URL 是包含和被包含关系) 识别的资源
- POST: 用来传输实体的主体, GET 也可以实现, 但是一般不使用
- **PUT: 传输文件, ** 但是鉴于 PUT 方法本身不带验证机制, 任何人都可以上传文件, 存在安全性问题, 因此网站一般都不使用该方法
- HEAD: 获得报文首部, 和 GET 请求一样, 只是不返回报文主体部分.
- DELETE: 删除文件, 同样不带验证机制, 存在安全性问题
- OPTIONS: 询问指定的请求 URI 支持哪些方法
- CONNECT: 要求在与代理服务器通信时建立隧道, 实现隧道协议进行 TCP 通信
GET 和 POST
- 本质上都 TCP 连接, 并无差别
- 由于 **HTTP 的规定和浏览器/服务器的限制, ** 导致其在实际应用过程中会体现出一些区别
区别
- GET 在浏览器回退时是无害的, 而 POST 会再次提交请求
- GET 产生的 URL 地址可以被 Bookmark, 而 POST 不可以
- GET 请求会被浏览器主动 cache, 而 POST 不会, 除非手动设置
- GET 请求只能进行 URL 编码, 而 POST 支持多种编码方式.
- GET 请求的参数会被完整保留在浏览器历史记录里, 而 POST 中的参数不会被保留
- GET 请求在 URL 中传送的参数是有长度限制的, 而 POST 没有
- 对参数的数据类型, GET 只接受 ASCII 字符, 而 POST 没有限制
- GET 比 POST 更不安全, 因为参数直接暴露在 URL 上, 所以不能用来传递敏感信息
- GET 参数通过 URL 传递, POST 则放在 Request body 中
参数长度
GET 请求长度最多 1024kb, POST 对请求数据没有限制
HTTP 协议没有 Body 和 URL 的长度限制, POST 对请求数据没有限制
安全
POST 比 GET 安全, 因为数据在地址栏上不可见, 然而, 从传输的角度来说, 其都是不安全的, 因为 HTTP 在网络上都是明文传输, 只要在网络节点上抓包, 就可以完整地获取数据报文.
只有使用 HTTPS 才能加密安全
POST 与 GET 小结
参数长度: GET 请求长度最多 1024 kb, POST 对请求数据没有限制
**请求参数: ** GET 请求参数是通过 URL 传递的, 多个参数以 & 连接, POST 请求放在 request body 中
请求缓存: GET 会请求缓存, 而 POST 请求不会, 除非手动设置
收藏为书签: GET 请求支持, POST 请求不支持
安全性: POST 比 GET 安全, GET 请求在浏览器回退时是无害的, 而 POST 会再次请求
历史记录: GET 请求参数会被完整保留在浏览器历史记录里, 而 POST 中的参数不会被保留
编码方式: GET 请求只能进行 URL 编码, 而 POST 支持多种编码方式
对参数的数据类型: GET 只接受 ASCII 字符, 而 POST 没有限制
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cu1universe!
评论