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

三.总结

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

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

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

目录
打赏
0
2
2
0
113
分享
相关文章
Haskell中的HTTP请求:代理与响应状态检查
Haskell中的HTTP请求:代理与响应状态检查
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
111 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
HTTP 范围Range请求
HTTP范围请求是一种强大的技术,允许客户端请求资源的部分内容,提高了传输效率和用户体验。通过正确配置服务器和实现范围请求,可以在视频流、断点续传下载等场景中发挥重要作用。希望本文提供的详细介绍和示例代码能帮助您更好地理解和应用这一技术。
105 19
HTTPS与HTTP:区别及安全性对比
HTTP和HTTPS是现代网络通信中的两种重要协议。HTTP为明文传输,简单但不安全;HTTPS基于HTTP并通过SSL/TLS加密,确保数据安全性和完整性,防止劫持和篡改。HTTPS还提供身份验证,保护用户隐私并防止中间人攻击。尽管HTTPS有额外的性能开销和配置成本,但在涉及敏感信息的场景中,如在线支付和用户登录,其安全性优势至关重要。搜索引擎也更青睐HTTPS网站,有助于提升SEO排名。综上,HTTPS已成为大多数网站的必然选择,以保障用户数据安全和合规性。
79 1
什么是HTTP POST请求?初学者指南与示范
HTTP POST请求是一种常用的HTTP方法,主要用于向服务器发送数据。通过合理设置请求头和请求主体,可以实现数据的可靠传输。无论是在客户端使用JavaScript,还是在服务器端使用Node.js,理解和掌握POST请求的工作原理和应用场景,对于Web开发至关重要。
403 18
|
2月前
|
.net HTTP请求类封装
`HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。
91 2
HTTP和HTTPS的区别
本文介绍HTTP与HTTPS的区别、HTTPS链接建立过程及常见加密算法。HTTP为明文传输,易被窃听;HTTPS通过SSL/TLS协议加密,确保数据安全。HTTPS使用端口443,提供认证机制。文中还详细讲解了对称加密(如AES、DES)和非对称加密(如RSA、ECC)算法的特点及应用场景。
什么是 HTTP Range请求(范围请求)
HTTP Range 请求是一种非常有用的 HTTP 功能,允许客户端请求资源的特定部分,从而提高传输效率和用户体验。通过合理使用 Range 请求,可以实现断点续传、视频流播放和按需加载等功能。了解并掌握 HTTP Range 请求的工作原理和应用场景,对开发高效的网络应用至关重要。
242 16
第六问:http和https区别与联系
HTTP 和 HTTPS 是现代网络通信中的两种重要协议。HTTP 是明文传输协议,无加密功能;HTTPS 在 HTTP 基础上加入 SSL/TLS 加密层,提供数据加密、身份验证和数据完整性保障。HTTP 适用于非敏感信息传输,如新闻网站;HTTPS 适用于在线支付、账户登录等需要保护用户数据的场景。
74 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等