超文本传输协议( HTTP )是用于启用客户端与服务器之间的通信,其中 GET 请求和 POST 请求是则是 HTTP 方法中最为常用的两种。那么这 GET 和 POST 的区别到底是什么呢?两者是否安全呢?

从标准上来说,大致区别如下:

  • GET 用于获取信息,可缓存,无副作用,且是幂等的,通过 url 传递参数,且参数 url 可见。

  • POST 用于修改服务器上的数据,不可缓存,有副作用,非幂等,通过 body 体传递参数,且参数 url 不可见。

但从报文上来说, GET 和 POST 都只是 HTTP 协议中两种请求方式,本质上都是 TCP 链接,没有区别,只是报文的格式有所不同。

  • GET 方法请求报文第一行是:

    GET /uri HTTP/1.1 \r\n
  • POST 方法请求报文第一行则是:

    POST /uri HTTP/1.1 \r\n

由此可见,不带参数时它们的区别仅是报文的前几个字符不同而已。而在带参数时的报文中,我们约定, GET 方法的参数应放在 url 中, POST 方法参数应放在 body 中。当然,当服务端允许的条件下,不按规范,我们也可以使用 POST 在 url 上写参数,用 GET 方法在 body 上写参数。

那么 POST 方法就比 GET 方法安全吗?按照网上大部分文章的解释,POST 比 GET 安全,因为数据在地址栏上不可见。然而实际上,从传输的角度来说,POST 和 GET 都是不安全的,因为他们在网络上都是明文传输,只要在网络节点上捉包,就能获取完整的数据报文。因此想要安全传输,就需要加密,即 HTTPS 。

所以,对于 GET 和 POST 的区别,总的来说,就是:它们的本质都是 TCP 链接,并无区别。但是由于 HTTP 的规定以及浏览器/服务器的限制,导致它们在应用过程中可能会有所不同。

比如我现在使用的 API 接口测试工具 Eolink ,它支持 HTTP 、 HTTPS 、 WS 、 WSS 等多种常用的协议,它能帮助我完成之前使用过的很多工具都没能覆盖到的多种协议。

除此之外,Eolink 还提供了自动化测试服务、 API 网关、 API 监控、 API 自动生成等服务。感兴趣可以自行使用:www.eolink.com

最新文章

  1. Ganglia安装搭建
  2. ES6新增值比较函数Object.is
  3. nios II--实验6——串口硬件部分
  4. java 代理模式一: 静态代理
  5. CSS学习笔记(float和盒子模型)
  6. hdu3333(线段树)
  7. phpStudy 2014的Apache虚拟主机配置
  8. iOS 推送,当接到推送消息时如何处理?
  9. WPF Navigation导航
  10. 非常好用的正则表达式"\\s+" - 匹配任意空白字符
  11. c语言中break continue goto return和exit的区别 联系(筛选奇数和goto求和)
  12. linux 下配置mysql区分大小写(不区分可能出现找不到表的情况)怎么样使用yum来安装mysql
  13. flash播放器遮挡页面中元素问题解决
  14. 第四课 Grid Control实验 GC OMS安装(第二台机器部署)
  15. Oracle笔试题库 附参考答案
  16. Dev控件 galleryControl
  17. 解决uploadify在使用IE内核等浏览器无法使用
  18. springboot学习随笔(一):springboot环境构建:eclipse+maven+jdk1.8
  19. PE文件基础
  20. HashMap内存泄漏

热门文章

  1. 看 AWS 如何通过 Nitro System 构建竞争优势
  2. Java学习笔记-学生管理系统
  3. 三大特性,多个场景,Serverless 应用引擎 SAE 全面升级
  4. mysql忘记root密码实现免密登录
  5. 力扣算法JS LC 59-螺旋矩阵2,LC 152-乘积最大子数组
  6. 从MySQL全备文件中恢复单个库或者单个表
  7. 200 行代码实现基于 Paxos 的 KV 存储
  8. 第06组Alpha冲刺(6/6)
  9. 缓存&PWA实践
  10. .Net分表分库动态化处理