【让面试官吃惊的回答:HTTP中GET和POST请求的区别你知道吗?】

文章详细阐述了HTTP协议中GET和POST请求的基本区别,如数据暴露、安全性和长度限制,并指出它们在TCP/IP层面上并无本质差异,主要由HTTP规范定义其用途。此外,GET和POST在实际应用中的性能差异和使用场景也有所讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.知识回顾

之前我们一起学习了HTTP1.0、HTTP1.1、HTTP2.0协议之前的区别、以及URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程、HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别、HTTP协议、HTTP请求报文和响应报文、HTTP请求报文常用字段、HTTP请求方法、HTTP响应码、TCP协议、UDP协议、TCP三次握手四次挥手、TCP和UDP协议的区别、TCP的拥塞控制?TCP 如何实现流量控制?TCP如何保证传输的可靠性、这篇文章我们就一起来学习关于HTTP协议中Get和Post的区别?

在这里插入图片描述

二.HTTP中GET和POST的区别你知道吗?

2.1 基本回答(必须回答出来)

网上很多人都说如果面试官问了你这个问题,那么你肯定能把下面的说出来,但是这不是面试官要的,确实是,如果面试中只回答这部分确实不够,但是前提是我们一定要先把下面的这部分区别都说出来,然后再去谈这个是过于基础的问题还是怎么样?如果下面这个最基本的都回答不上来,就不要继续往后谈了,基本的你回答不出啦,直接回答更深层次的,即便你侥幸通过了面试,那么,公司最后也会凭实力开了你,所以,基础的知识是我们学习后面更深层次部分的保证。一定要踏实的学。

  1. GET请求是不安全的,直接暴露在了地址栏中;POST请求通过form表单提交,数据信息放到Request body中,也更加安全。
  2. GET请求的参数只支持ASCII 编码;POST请求没有限制。
  3. GET请求只能进行url编码,而POST支持多种编码方式。
  4. GET通过在地址栏中编写请求的的参数,POST请求是在form表单中进行提交的。
  5. GET请求如果回退不会再发送请求;但是POST如果回退会再次发送请求,重新提交请求的数据。
  6. GET请求有长度限制,URL 的长度是受限制的(URL 的最大长度是 2048 个字符);但是我们的POST请求是没有长度限制的。
  7. GET请求可以被浏览器进行缓存;但是POST请求不会被缓存。
  8. GET请求是可以在浏览器历史记录中找到的;POST请求是找不到的。
  9. GET请求是可以被浏览器收藏的;POST请求是不会被收藏的。

2.2 本质回答(同样必须回答出来)

接下来,我们就必须说点颠覆你认知的东西啦?在这里插入图片描述

其实HTTP中GET请求和POST请求是没有实质性区别的。

什么,你在逗我吧。
在这里插入图片描述
刚才跟我说了一大堆关于这俩个请求方法的区别,现在和我说没有任何区别,我发现你是在玩我。

不要急嘛,听我慢慢说来。因为起初我和此时的你是也是一样的反应。在这里插入图片描述

我们之前的文章详细的讲解了关于HTTP基本概念以及HTTP协议、TCP协议、UDP协议的知识,不知道到同学一定要先去看看这方便知识的内容。
计算机网络专栏的知识放到这里了,直接点击就可以哟。

此处我们就不做过多的讲解,只问俩个这样的问题?

  1. 问题1:GET和POST是什么?HTTP协议中的两种发送请求的方法。
  2. 问题2:HTTP是什么?俗称超文本传输协议(Hypertext Transfer Protocol)。HTTP 协议是用来规范超文本的传输。超文本的意思就是在网络上传输包括文本在内的各式各样的消息。

那么重点来了:
在这里插入图片描述

  1. HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP连接。GET和POST能做的事情是一样。如果我们给GET加上request body,给POST带上url参数,技术上是完全行的通的,没有任何问题,但是为什么要区分呢?说的明白一些就是为了让HTTP中请求的方法各司其事,效率更高,HTTP就是给它们指定规则的一种规范。
  2. GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

2.3 重大区别(一定要说)

GET和POST还有一个重大区别:GET产生一个TCP数据包;POST产生两个TCP数据包。

  1. 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
  2. 对于POST方式的请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
易错点:可以作为补充点来说

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

  1. GET与POST都有自己的语义,不能随便混用。
  2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
  3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

三.总结

学习的时候一定要让整个知识成体系,这点很重要,如果你整个知识框架建立起来了,那么无论是面试,或者是工作、学习,都会更加容易,更加轻松。才能体会到什么是真正的事半功倍。

如果以上的文章内容帮助到你了,留下你宝贵的赞吧,创作不易,感谢支持。

我是硕风和炜,我们下篇文章见哦。

在这里插入图片描述

特别感谢:参考博客地址,感兴趣的同学可以看一下----> https://zhuanlan.zhihu.com/p/65544106

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值