HTTP中GET和POST请求的区别你知道吗?

简介: HTTP中GET和POST请求的区别你知道吗?

一.知识回顾

之前我们一起学习了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的区别?
image.png

二.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就只发送一次。

三.总结

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

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

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

相关文章
|
5天前
|
缓存 安全 网络协议
HTTP和HTTPS的区别有哪些?
本文简要总结了 HTTP 和 HTTPS 的区别,从概念、端口、连接方式、使用场景、安全性等多个角度进行了对比。HTTP 是无状态的、无连接的应用层协议,适用于一般性网站和性能要求较高的应用;HTTPS 则通过 SSL/TLS 层提供加密、认证和完整性保护,适用于涉及敏感信息和高安全性的场景。文章还讨论了两者在性能上的差异,包括握手和加密开销、缓存效果以及 HTTP/2 的多路复用技术。最终,根据具体需求选择合适的协议能够更好地平衡安全性和性能。
50 2
HTTP和HTTPS的区别有哪些?
|
11天前
|
Rust 前端开发 API
Tauri 开发实践 — Tauri HTTP 请求开发
本文介绍了如何在 Tauri 中发起 HTTP 请求。首先通过安装 Tauri 生态中的工具包并配置 `tauri.conf.json` 文件来允许特定域名的 HTTP 通信。接着封装了一个简单的 HTTP 客户端类,并在页面中使用该客户端实现 GET 和 POST 请求。最后提供了完整的源码地址以供参考。此功能使得桌面应用能够与远程服务器进行交互,增强了应用的实用性。
40 1
Tauri 开发实践 — Tauri HTTP 请求开发
|
16天前
|
缓存 网络协议 JavaScript
【HTTP】构造HTTP请求和状态码
【HTTP】构造HTTP请求和状态码
39 1
【HTTP】构造HTTP请求和状态码
|
16天前
|
存储 Java 程序员
【HTTP】请求“报头”,Referer 和 Cookie
【HTTP】请求“报头”,Referer 和 Cookie
29 1
【HTTP】请求“报头”,Referer 和 Cookie
|
12天前
|
存储 JSON API
HTTP 请求与响应处理:C#中的实践
【10月更文挑战第4天】在现代Web开发中,HTTP协议至关重要,无论构建Web应用还是API开发,都需要熟练掌握HTTP请求与响应处理。本文从C#角度出发,介绍HTTP基础知识,包括请求与响应结构,并通过`HttpClient`库演示如何发送GET请求及处理响应,同时分析常见错误并提供解决方案,助你更高效地完成HTTP相关任务。
55 2
|
16天前
|
JSON 缓存 JavaScript
【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))
【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))
55 1
|
16天前
|
JSON 编解码 安全
【HTTP】方法(method)以及 GET 和 POST 的区别
【HTTP】方法(method)以及 GET 和 POST 的区别
52 1
|
18天前
|
缓存 移动开发 前端开发
HTTP请求走私漏洞原理与利用手段分析
HTTP请求走私漏洞原理与利用手段分析
22 1
|
19天前
|
JSON 网络协议 网络安全
详解新一代 HTTP 请求库:httpx
详解新一代 HTTP 请求库:httpx
33 1
|
14天前
|
SQL JSON 缓存
你了解 SpringBoot 在一次 http 请求中耗费了多少内存吗?
在工作中常需进行全链路压测并优化JVM参数。通过实验可精确计算特定并发下所需的堆内存,并结合JVM新生代大小估算GC频率,进而优化系统。实验基于SpringBoot应用,利用JMeter模拟并发请求,分析GC日志得出:单次HTTP请求平均消耗约34KB堆内存。复杂环境下,如公司线上环境,单次RPC请求内存消耗可达0.5MB至1MB,揭示了高并发场景下的内存管理挑战。

热门文章

最新文章