一.知识回顾
之前我们一起学习了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 基本回答(必须回答出来)
网上很多人都说如果面试官问了你这个问题,那么你肯定能把下面的说出来,但是这不是面试官要的,确实是,如果面试中只回答这部分确实不够,但是前提是我们一定要先把下面的这部分区别都说出来,然后再去谈这个是过于基础的问题还是怎么样?如果下面这个最基本的都回答不上来,就不要继续往后谈了,基本的你回答不出啦,直接回答更深层次的,即便你侥幸通过了面试,那么,公司最后也会凭实力开了你,所以,基础的知识是我们学习后面更深层次部分的保证。一定要踏实的学。
- GET请求是不安全的,直接暴露在了地址栏中;POST请求通过form表单提交,数据信息放到Request body中,也更加安全。
- GET请求的参数只支持ASCII 编码;POST请求没有限制。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET通过在地址栏中编写请求的的参数,POST请求是在form表单中进行提交的。
- GET请求如果回退不会再发送请求;但是POST如果回退会再次发送请求,重新提交请求的数据。
- GET请求有长度限制,URL 的长度是受限制的(URL 的最大长度是 2048 个字符);但是我们的POST请求是没有长度限制的。
- GET请求可以被浏览器进行缓存;但是POST请求不会被缓存。
- GET请求是可以在浏览器历史记录中找到的;POST请求是找不到的。
- GET请求是可以被浏览器收藏的;POST请求是不会被收藏的。
2.2 本质回答(同样必须回答出来)
接下来,我们就必须说点颠覆你认知的东西啦?
其实HTTP中GET请求和POST请求是没有实质性区别的。
什么,你在逗我吧。
刚才跟我说了一大堆关于这俩个请求方法的区别,现在和我说没有任何区别,我发现你是在玩我。
不要急嘛,听我慢慢说来。因为起初我和此时的你是也是一样的反应。
我们之前的文章详细的讲解了关于HTTP基本概念以及HTTP协议、TCP协议、UDP协议的知识,不知道到同学一定要先去看看这方便知识的内容。
计算机网络专栏的知识放到这里了,直接点击就可以哟。
此处我们就不做过多的讲解,只问俩个这样的问题?
- 问题1:GET和POST是什么?HTTP协议中的两种发送请求的方法。
- 问题2:HTTP是什么?俗称超文本传输协议(Hypertext Transfer Protocol)。HTTP 协议是用来规范超文本的传输。超文本的意思就是在网络上传输包括文本在内的各式各样的消息。
那么重点来了:
- HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP连接。GET和POST能做的事情是一样。如果我们给GET加上request body,给POST带上url参数,技术上是完全行的通的,没有任何问题,但是为什么要区分呢?说的明白一些就是为了让HTTP中请求的方法各司其事,效率更高,HTTP就是给它们指定规则的一种规范。
- GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
2.3 重大区别(一定要说)
GET和POST还有一个重大区别:GET产生一个TCP数据包;POST产生两个TCP数据包。
- 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
- 对于POST方式的请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
易错点:可以作为补充点来说
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?
- GET与POST都有自己的语义,不能随便混用。
- 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
- 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
三.总结
学习的时候一定要让整个知识成体系,这点很重要,如果你整个知识框架建立起来了,那么无论是面试,或者是工作、学习,都会更加容易,更加轻松。才能体会到什么是真正的事半功倍。
如果以上的文章内容帮助到你了,留下你宝贵的赞吧,创作不易,感谢支持。
我是硕风和炜,我们下篇文章见哦。
特别感谢:参考博客地址,感兴趣的同学可以看一下----> https://zhuanlan.zhihu.com/p/65544106