GET和POST是HTTP请求的两种基本方式,对于这两种请求方式的区别,只要是接触过Web开发的就能说出一二:GET把参数包含在URL中,POST通过正文传参!

而我想深入了解以下的时候,就去了w3cschool,这是w3cschool给出的标准答案:

这,恕在下愚钝@-@。在相继查了些资料之后,大概总结如下:

GET和POST报文上的区别

GET和POST方法其实是没有实质区别的。因为GET和POST只是HTTP协议中的两种请求方式,而HTTP协议是基于TCP/IP的应用层协议,所以无论GET还是POST,用的都是同一个传输层协议,所以在传输上是没有区别的。

而在报文格式上,不带任何参数时最大的区别就是第一行的方法名不同:

  • GET方法请求报文第一行如下:GET + URL + HTTP/1.1 \r\n
  • POST方法请求报文第一行如下:POST+ URL + HTTP/1.1 \r\n

那么在带参数时报文的区别在哪里呢?

在约定中,GET方法的参数应该放在URL中,POST方法参数应该放在正文中。

举个栗子:

如果参数是name=xiazi,email=97
GET方法的简约报文是这样的:GET http://job.com/companyLogin.do?name=xiazi&email=97 HTTP/1.1 HOST:localhost
POST方法的简约报文是这样的:POST http://job.com/companyLogin.do HTTP/1.1HOST:localhostname=xiazi&email=97

GET方法的安全性问题

由上边的例子我们可以知道:

  1. GET方法的参数是写在?后面,用&分割的
  2. GET方法中参数会在URL中显示,而POST方法则不会

那么,POST是不是比GET方法安全呢?

如果是依据数据在地址栏上是否可见来说的话,POST是比GET安全的。然而,从传输的角度来说,他们都是不安全的,因为HTTP在网络上是明文传输的,只要在网络节点上进行抓包就能完整地获取数据报文,所以要想安全传输就只有加密,也就是使用HTTPS

GET方法的长度限制问题

在HTTP协议中,并没有对BODY(正文)和URL的长度进行长度限制,对URL限制的大多数是浏览器和服务器的原因。大多数浏览器通常都会限制url长度在2K个字节,而大多数服务器最多处理64K大小的url。超过的部分,恕不处理。

浏览器就不用说了,服务器是因为处理长URL要消耗比较多的资源,为了性能和安全(防止恶意构造长URL来攻击服务器)考虑,会给URL限制长度

POST方法会产生两个TCP数据报问题

在有些文章中提到,POST方法会将Header和Body分开发送,先发送Header,服务端返回100状态码后再发送Body。

然而,HTTP协议中并没有规定POST发送时要发送两个数据报。因为能力问题借鉴了大佬的研究,得到了以下结论:大多数框架都是尽量在一个tcp包里面把HTTP请求发出去的,但是也确实存在先发HTTP头,然后发body的框架。但是具体发多少个TCP包,这个是代码的问题,是tcp协议栈的问题,跟HTTP没关系。详情请戳这里

HTTP协议之GET与POST区别相关推荐

  1. http、TCP/IP协议与socket之间的区别

    网络由下往上分为:  www.2cto.com   物理层--                       数据链路层-- 网络层--                       IP协议 传输层-- ...

  2. 光纤收发器和协议转换器之间有哪些区别?

    在通信网络领域,我们经常会用到光纤收发器和协议转换器,但对此不是很了解的朋友,往往可能会将二者搞混淆.那么,关于光纤收发器与协议转换器之间有什么区别呢?接下来就跟随杭州飞畅的小编一起来看看吧! 光纤收 ...

  3. 协议和服务器有什么区别,服务期协议是什么,劳动合同与服务期协议有什么区别?...

    一.服务期协议是什么? 服务期协议是用人单位与劳动者约定的劳动者为用人单位必须服务的期限.服务期协议不同与劳动合同,劳动合同是用人的单位与劳动者约定的劳动关系存续的存续期间的约定,劳动合同主要适用劳动 ...

  4. 面试篇-- Http、TCP/IP协议与Socket之间的区别

    网络由下往上分为: 物理层-- 数据链路层-- 网络层-- IP协议 传输层-- TCP协议 会话层-- 表示层和应用层-- HTTP协议 1.TCP/IP连接 手机能够使用联网功能是因为手机底层实现 ...

  5. Zigbee无线协议 和 WiFi通信协议的区别

    亿佰特物联网无线通信:Zigbee无线协议 和 WiFi通信协议的区别 物联网领域无线数据传输指的是无线数传模块将工业设备输出或者各种采集的数据进行远程传送,可以无线模拟量采集,也能无线开关量控制.无 ...

  6. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义:       这里 ...

  7. python网络通信效率_Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: 这里的客户端一般 ...

  8. 1400协议是什么和28181区别_舞阳钢铁生产30CrMnSiA国军标、国标、舞钢技术协议有什么区别...

    舞阳钢铁生产30CrMnSiA国军标.国标.舞钢技术协议有什么区别 1.30CrMnSiA钢的性质 从铁碳合金相图来看, 30CrMnSiA钢归于亚共析钢,缓冷到室温后的组织为铁素体+珠光体;从钢的分 ...

  9. 网上支付、协议支付与快捷支付区别

    区别 网上支付 快捷支付(以支付宝为例) 协议支付(以支付宝卡通为例) 客户体验 支付时需要输入银行账号和交易密码等多个步骤才能完成支付. 支付时只需输入支付宝账户的支付密码(或无需输入)即可完成支付 ...

  10. 网页HTTP协议 get和post请求区别?(HTTP中Get、Post、Put与Delete的区别)

    文章目录 这篇也不错:浅谈HTTP中Get.Post.Put与Delete的区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GE ...

最新文章

  1. ThreeJS的特效合成器和后期处理通道
  2. MVC 视图与控制器传值的几种方法
  3. 中国碳化硅行业发展走势与需求前景研究报告2022版
  4. Entity Framework 简介
  5. hexo github搭建博客常用的命令
  6. 2分钟学会Docker部署SpringBoot项目
  7. 步步为营 .NET三层架构解析 七、UI的设计(登陆页面、注册页页和添加部门页面)...
  8. mysql5.7.11源码安装,mysql 5.7.11 源码安装
  9. 比国内贵3000元!小米11 Ultra将于5月11日登陆欧洲市场
  10. Android Gradle指南系列
  11. Emberjs学习之路(一)
  12. 计算机组成原理之模2运算
  13. 坐标转换并导出KML文件
  14. 基于Android的员工工资管理系统
  15. LoRa码元、码片、信号带宽、编码率等解析
  16. sqlalchemy 踩过的坑
  17. 上海到底是一座什么样的城市?
  18. Android通过NTRIP协议获取差分数据实现高精度定位
  19. 管理员才可以运行的:chkdsk:磁盘管理 sfc /scannow检测系统文件
  20. 【深度首发】灵犀微光CEO郑昱:十万片级AR光学引擎的量产之路丨Xtecher 封面

热门文章

  1. 云服务器端口管理修改,云服务器端口管理修改
  2. 在线上也能进行商标注册
  3. 2022年openstack快速安装 Skyline 组件安装,支持极简化配置
  4. Ubuntu 14.04.2安装内核源码树以及编译
  5. 淘宝购物如何找优惠券_淘宝上买衣服怎么省钱
  6. 全国计算机等级考试一级b历年真题,2011年3月全国计算机等级考试一级b真题
  7. 公司内局域网访问接口
  8. cocos creator动态加载DragonBones
  9. 算法比较——ROC曲线和PR曲线
  10. linux 的ss命令,Linux中的ss命令的详细解释