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