面试官:GET和POST两种基本请求方法有什么区别

IOT-OS之RT-Thread(十七)--- 如何使用HTTP协议实现OTA空中升级 一、Bootloader OTA 原理 Bootloader 框架底层由Flash 驱动提供ROM 或Flash 分区访问的能力,为搬移固件代码提供支持。Bootloader 还应提供解密、解压缩、必要的校验功能,经校验通过后将更新版本代码写入或搬移到Application 分区覆盖正在使用的固件代码,这就完成了固件升级过程。 二、HTTP OTA Downloader 实现 三、Bootloader OTA 示例 阅读详情

来源:r6d.cn/j26B

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。

当你在面试中被问到这个问题,你的内心充满了自信和喜悦。

你轻轻松松的给出了一个“标准答案”:

  • 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中。

(本标准答案参考自w3schools)

“很遗憾,这不是我们要的回答!”

请告诉我真相...

如果我告诉你GET和POST本质上没有区别你信吗? 

让我们扒下GET和POST的外衣,坦诚相见吧!


GET和POST是什么?HTTP协议中的两种发送请求的方法。

HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。 

那么,“标准答案”里的那些区别是怎么回事?

 

在我大万维网世界中,TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。

但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。

HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录。

如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里。当然,你也可以在GET的时候往车厢内偷偷藏点货物,但是这是很不光彩;也可以在POST的时候在车顶上也放一些数据,让人觉得傻乎乎的。

HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。

但是,我们只看到HTTP对GET和POST参数的传送渠道(url还是requrest body)提出了要求。“标准答案”里关于参数大小的限制又是从哪来的呢?



在我大万维网世界中,还有另一个重要的角色:运输公司。

不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司。虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。

但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。业

界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。

如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。

好了,现在你知道,GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 

你以为本文就这么结束了?

 

我们的大BOSS还等着出场呢...

这位BOSS有多神秘?当你试图在网上找“GET和POST的区别”的时候,那些你会看到的搜索结果里,从没有提到他。他究竟是什么呢...

GET和POST还有一个重大区别:

简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。

长的说:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。

但这是一个坑!跳入需谨慎。为什么?

1. GET与POST都有自己的语义,不能随便混用。

2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

现在,当面试官再问你“GET与POST的区别”的时候,你的内心是不是这样的?

认识GET和POST 学习目标:认识get和post两个类,并知道GET和POST请求的区别和用途。 上次我们安装并了解了requests,现在我们开始使用它。 首先requests里面有非常重要的两个类,他们分别是get和post,get和post都是用于请求的,但根据不同的需求需要使用不同的方法。 一、 GET和POST的区别 其实get和post分别是两种不同的请求方式,但它们的原理和性质不同,接下来我们来了解一下。 (1).GET请求 我们来打一个比较简... 阅读详情

相关推荐

Bat中使用curl请求post接口(application/x-www-form-urlencoded)并携带请求头和请求参数

线上需要测试某接口的可通行以及返回数据等。如果是get请求可以直接在浏览器中校验,如果是post请求且又不想安装postman等三方工具,可以使用新建一个bat脚本文件的方式去测试接口。

BADAO_LIUMANG_QIZHI的博客 4321

99%的人都理解错了HTTP中GET与POST的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问到这个问题,你的内心充满了自信和喜悦。 ...

weixin_34194359的博客 1599

html2canvas 返回的toDataURL()数据为 data:,的解决方法

html2canvas 返回的toDataURL()数据为 data:,的解决方法 我在使用html2canvas的使用, 发现toDataURL() 返回的数据为data:, 而且将数据设置为img的src属性,图片也不能正常显示,我尝试了很多方法,也没有解决出来,经过我不断的百度+自己尝试,终于解决了这个问题。 代码: 这段代码是没有任何问题的,标准html2canvas的demod代码,但就是无法正常将图片previewImg 渲染出来,dataURL 我打印的结果为 data:, 错误的原因是,

java123_PB的博客 5025

GET 和 POST详解

GET 和 POST详解 转载: 知乎:https://www.zhihu.com/question/28586791 一、HTTP请求方法 Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。...

菜鸟-传奇 3万+

在jetson上对fastdeploy进行源码编译(完整版)

在大多数Linux发行版中,你可以使用包管理器安装Python开发包。根据jetpack的版本选择对应的推理库版本。在~/.bashrc中写入这三行。

如果想成为中心,那么就到中心去吧。 679

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1634

面试官:GET 和 POST 两种基本请求方法有什么区别?

点击上方 "后端架构师"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!关注订阅号「后端架构师」,收看更多精彩内容每日英文Smiling doesn't ...

程序员小乐 1713

AUTOSAR从入门到精通-【应用实战篇】车载HMI-ADAS

ADAS是高级驾驶辅助系统(Advanced Driving Assistance System)简称ADAS。ADAS高级驾驶辅助系统是利用安装于车上的各式各样的传感器, 在第一时间收集车内外的环境数据, 进行静、动态物体的辨识、侦测与追踪等技术上的处理, 从而能够让驾驶者在最快的时间察觉可能发生的危险, 以引起注意和提高安全性的主动安全技术。

lin_xiu的博客 1436

面试官:GET 和 POST 两种基本请求方法有什么区别

点击上方Java后端,选择设为星标优质文章,及时送达来源:r6d.cn/j26BGET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观...

公众号:Java后端 329

手把手教你学PCIE--系统内存管理:GART(Graphics Address Remapping Table)的典型用途详解

GART(图形地址重映射表)是GPU的核心组件,主要用于地址映射转换。其典型用途分为物理模式和虚拟模式两类:在物理模式下,GART将GPU虚拟地址映射到分散的物理内存,支持DMA连续访问非连续内存块,适用于GPU渲染纹理采样和AI推理数据搬运等场景;在虚拟模式下,GART配合IOMMU实现多级映射,将GPU虚拟地址转换为虚拟机物理地址再映射到宿主机物理地址,确保多租户隔离,应用于云服务器GPU共享和容器化AI训练等虚拟化环境。两种模式分别优化了高性能计算场景和虚拟化场景的需求。

MHD0815的博客 367

华为OD新系统真题-最小极差分组(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【最小极差分组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【最小极差分组】多语言题解。

qq_45776114的博客 594

bat post请求_面试官:GET和POST两种基本请求方法有什么区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个“标准答案...

weixin_39755625的博客 124

x265开源编码器源码框架深度解析

x265开源编码器源码框架深度解析

世界那么大,我想去看看~【随心更新,看世界去了😄】 670

hutool请求get带参数请求_面试官:GET和POST两种基本请求方法有什么区别

来源:r6d.cn/j26BGET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻...

weixin_36078604的博客 845

10.28华为OD机试真题 新系统 - 社交网络消息转发 (Java/Py/C/C++/Js/Go)

10.28华为OD机试真题 新系统 - 社交网络消息转发 (Java/Py/C/C++/Js/Go)

算法大师! 440

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java最新面试官:GET和POST两种基本请求方法有什么区别,Java程序员成长路线

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦请告诉我真相…如果我告诉你GET和POST本质上没有区别你信吗?让我们扒下GET和POST的外衣,坦诚相见吧!GET和POST是什么?HTTP协议中的两种发送请求的方法。HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。

2401_84584238的博客 1324

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

307 跳转会携带请求方法吗_面试官:GET和POST两种基本请求方法有什么区别

点击上方蓝色“后端面试那些事儿”,选择“设为星标”学最好的别人,做最好的我们来源:r6d.cn/j26BGET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道...

weixin_39796238的博客 70

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

307 跳转会携带请求方法吗_面试官:GET 和 POST 两种基本请求方法有什么区别

关注“Java有道”,星标或置顶,更多干货等你发现!来源:r6d.cn/j26BGET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在...

weixin_39819661的博客 126
上一篇: IDEA 上位?不!Eclipse Theia 1.0 发布!
下一篇: 一连发布三个版本,Boot要上天?
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值