前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >GET和POST的区别

GET和POST的区别

作者头像
ppxai
发布于 2020-09-23 09:18:52
发布于 2020-09-23 09:18:52
1.5K00
代码可运行
举报
文章被收录于专栏:皮皮星球皮皮星球
运行总次数:0
代码可运行

一、GET和POST

  • GET用于获取信息,是无副作用的,是幂等的,且可以缓存的。
  • POST用于修改服务器上的数据,有副作用,非幂等的,不可缓存。

二、报文的区别

GET和POST没有实质的区别,只是报文格式的不同

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

报文格式上,不带参数时,最大的却别是第一行方法名不同。POST方法请求报文第一行是:POST /uri HTTP/1.1 \r\n,而GET方法请求报文第一行是:GET /uri HTTP/1.1 \r\n

所以,不带参数的时候,它们的区别仅仅就是报文前面几个字符不同而已,至于带参数的报文的区别就是:约定GET方法的参数应该放在url中,POST方法参数应该放在body中。

例如:如果参数是:page=2,name=bitbo,那么GET方法的报文头部前面可能是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /book?page=2&name=bitbo HTTP/1.1
Host: localhost

POST方法简约版报文可能是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST /book HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

page=2%name=bitbo

所以,其实两种方法的本质上是TCP连接,没有差别,也就是说,如果不按规范来也是可以,只要前后端约定好怎么传递参数就可以。也就是说可以在URL上写参数,然后方法使用POST;也可以在body写参数,然后方法使用GET,只要后端服务支持这种传参方式就可以。

三、常见问题

1、GET方法参数写法是固定的吗?

在常见约定中,我们的参数是写在?后面,用&分割每个参数。

而后端服务在解析报文的过程是用过获取TCP数据,用正则等工具从数据中获取Header和Body,从而提取参数。也就是说,我们可以约定自己的写法,只要服务端可以解析出来就可以,比如GO语言常用的WEB框架gin,常用的写法是:https://www.bitbo.com/book/page/12/name/bitbo,或者直接前后端约定好参数位置https://www.bitbo.com/book/12/bitbo,也可以用常用的?&方式。

2、POST方法比GET方法安全?

按照网上大部分文章的解释,POST比GET安全,因为数据在地址栏不可见。然而,从传输的角度来说,POST和GET方式都是不安全的,因为HTTP在网络上是明文传输的,只要在网络节点上抓包,就能完整的获取数据报文。要想安全传输就只有加密,也就是加上安全协议,使用HTTPS协议

3、GET方法的长度有限制?

网上大部分的观点在评论者POST和GET的时候都有这一条,提到游览器地址栏输入的参数是有限的。然而HTTP协议其实并没有Body和URL的长度限制,对URL的限制大多是游览器和服务器的原因,比如服务器出于性能和安全的考虑,防止恶意构造长URL来攻击,处理长URL会消耗比较多的资源。所以给URL长度加上限制。

4、POST方法会产生两个TCP数据包?

有些文章提到,POST会将Header和body分开发送,先发送Header,服务器返回100状态码再发送body。然而HTTP协议并没有明确说明POST会产生两个TCP数据包,所以header和body分开发送是部分游览器或者框架的请求方式,并不属于post必然行为。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年07月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
http协议的get和post方法的区别
相信许多人都或多或少知道get和post区别,大家最常说的几个区别无非是一下几个:
全栈程序员站长
2022/09/12
5590
深入解析HTTP请求:了解请求特征与报文格式的关键秘密
在上一章节中,我们详细探讨了超文本传输协议(HTTP)的基本概念,并且延伸讨论了HTTP请求响应的基本流程。在这个过程中,浏览器首先通过DNS解析来确定要访问的服务器的IP地址,然后与服务器建立起HTTP连接。接下来,浏览器会向服务器发送HTTP请求报文,而服务器则会解析该请求报文,并返回包含所请求资源的HTTP响应报文。
努力的小雨
2023/11/28
4670
51 张图助你彻底掌握 HTTP 协议
如果说 TCP/IP 协议是互联网通信的根基,那么 HTTP 就是其中当之无愧的王者,小到日常生活中的游戏,新闻,大到双十一秒杀等都能看到它的身影,据 NetCraft 统计,目前全球至少有 16 亿个网站、2 亿多个独立域名,而这个庞大网络世界的底层运转机制就是 HTTP,可以毫不夸张的说,无 HTTP 不通信!
kunge
2021/01/13
6520
图解 HTTP 常见面试题
在面试过程中,HTTP 被提问的概率还是比较高的。 本文搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 + 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP。
李林LiLin
2023/03/12
5350
炸裂!万字长文拿下HTTP 我在字节跳动等你!
HTTP(hypertext transport protocol)翻译过来为"超文本传输协议",文本可以理解为简单的字符文字组合,也可以理解为更为复杂的音频或者图像等。那么将这个词语拆分为三个部分。
我是程序员小贱
2020/06/05
7200
web开发快餐式入门指南 1.1 http
由于web应用大多数都在浏览器中进行操作,所以我们有必要先了解一下浏览器里面到底发生了什么。简而言之,当你在浏览器的地址栏中输入网址并按下回车,或者点击了网页上的某个链接时,浏览器就会按照网址给目标服务器发送请求。浏览器和服务器之间的请求遵循http协议,协议规定了所使用的格式,只有按照这种格式组织的数据才能相互识别。
ApacheCN_飞龙
2019/02/15
4290
面试必备:GET和POST 的区别详细解说
最近一些小伙伴面试都会被问到 get 和 post 的区别,很多都只能简单的说几点,今天我们就来把弄的明明白白,彻彻底底。
Javanx
2019/09/04
12.9K0
面试必备:GET和POST 的区别详细解说
都2019年了,还问GET和POST的区别【深度好文】
最近看了一些同学的面经,发现无论什么技术岗位,还是会问到 get 和 post 的区别,而搜索出来的答案并不能让我们装得一手好逼,那就让我们从 HTTP 报文的角度来撸一波,从而搞明白他们的区别。
孟船长
2019/03/19
5580
都2019年了,还问GET和POST的区别【深度好文】
面试必考 | GET和POST区别
最近看了一些同学的面经,发现无论什么技术岗位,还是会问到 GET 和 POST 请求的区别,而搜索出来的答案并不能让我们装得一手好逼,那就让我们从 HTTP 报文的角度来撸一波,从而搞明白他们的区别。
用户3946442
2022/04/11
7860
面试必考 | GET和POST区别
都9102年了,还问GET和POST的区别
本篇文章只纯属于转载,转载内容只是部分内容并且格式未进行排版,只是为了给读者推荐而已,详情请点击文末左下角的阅读原文。
兔云小新LM
2019/07/24
3440
Python接口自动化-接口基础(二)
它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
可可的测试小栈
2020/02/25
7640
深入【Get】与【Post】区别
其实吧,GET和POST在本质上没有区别,都是HTTP协议中的两种发送请求的方法。而HTTP呢,是基于TCP/IP的关于数据如何在万维网中如何通信的协议。 
红目香薰
2022/11/28
4130
HTTP请求报文和响应报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
10JQKA
2019/10/23
2.3K0
HTTP请求报文和响应报文
面试官:GET 和 POST 到底有什么区别?
大家好,我是二哥呀。这个问题虽然看上去很初级,但实际上却涉及到方方面面,这也就是为啥面试里老爱问这个的原因之一。
沉默王二
2022/04/14
6050
面试官:GET 和 POST 到底有什么区别?
【黄啊码】什么是HTTP?HTTP是如何演变的?
超文本传输协议。HTTP是在计算机中用于两点之间传输文字、图片、音频、视频等超文本数据的约定和规范
黄啊码
2022/06/10
1.5K0
HTTP协议和静态Web服务器
超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片、音乐、视频、超链接等等都属于超文本。
用户9399690
2022/01/20
7030
HTTP协议和静态Web服务器
【前端 · 面试 】HTTP 总结(五)—— GET 和 POST
在前后端交互的过程中,使用频率最高的莫过于 GET 和 POST 这两个方法,并且这也是面试中被问到频率很高的知识点。
编程三昧
2021/08/05
3290
【前端 · 面试 】HTTP 总结(五)——  GET 和 POST
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
本文对于计算机面试、笔试过程中经常被问到的计算机网络类问题,做一个梳理总结,方便自己查看学习,同时也希望为其他找工作、学习的伙伴提供一个参考。
寻求出路的程序媛
2024/11/07
1630
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
听我讲完GET、POST原理,面试官给我倒了杯卡布奇诺
有一次面试的时候也被问到了这个问题,下面我会以面试的形式呈现给大家,那么就让我把大家拉到面试的现场吧!
狼王编程
2021/05/31
3990
听我讲完GET、POST原理,面试官给我倒了杯卡布奇诺
【面试题】HTTP知识点整理(附答案)
HTTP/1 的几种优化可以弃用: 合并文件、内联资源、雪碧图、域名分片对于 HTTP/2 来说是不必要的,使用 h2 尽可能将资源细粒化,文件分解地尽可能散,不用担心请求数多
木子星兮
2020/07/17
1.4K0
【面试题】HTTP知识点整理(附答案)
推荐阅读
相关推荐
http协议的get和post方法的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验