听!HTTP的声音——请求与响应
20多年用网页使用HTTP或HTTPS,除了小学微机老师说过HTTP的故事,我几乎淡忘了这个存在,我们今天就来听听它到底说了什么。
HTTP是什么?
来自维基百科的一段话
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
1990年英国的李爵士创作出成型的HTTP,将他自己想把世界上的每个人都通过简单的方式连接起来的梦想实现。因为有了这个协议,只要有电脑能上网的人都可以通过这个协议来互相沟通访问,不然就得下载一些乱七八糟的配置软件,要有多烦有多烦。
HTTP的请求和响应
其实严格来说并不是HTTP的请求和响应,因为他只是一个协议而已,想想看,你自己家的劳动合同能自己写东西?这个请求和响应是浏览器和服务器之间的对话,只不过他们通过HTTP的形式来沟通罢了。那为什么要用HTTP的形式沟通呢?很简单,因为其中一个说英语和汉语,一个会说德语和英语,你说他们在一起说什么语言,而HTTP的地位就相当于英语。
现在我们让看看这个文本协议的内容,了解一下浏览器和服务器是怎么沟通的。
git来听HTTP
curl在git中的用法
curl是git命令的一种,我们在命令查询里面查看一下,输入curl -s -v -H
这是我稍微网页翻译了一下的结果:
- curl转到网址
- -s安静的意思,把过程中加载和消息忽略掉(这个我们不需要)
- -v把发送和提取显示出来(这个就是我要的)
- -H这是什么鬼(看不懂,不理他)
curl展现响应和请求
打开git bash 我们输入curl -v -- "https://www.baidu.com"来看看。下面内容很多,我们找到这个
怎么知道这个就是请求?
- 格式
- 前面是>
我们说下格式:
动作(Git) 路径(/) 协议/版本号(HTTP/1.1) -- 第一部分
key1(Host):value(www.baidu.com) -- 第二部分
key2(Usre):value(curl/7.60.0) -- 第二部分
......
keyn(xxx):value(xxx) -- 第二部分
回车 -- 第三部分
XXXXXX(这个自己在curl加上去才有,这里就不演示了)--第四部分
还有响应
curl响应.png前面是<
格式:
协议/版本号(HTTP/1.1) 状态码(200) 状态解释(OK)-- 第一部分
key1(Accept-Ranges):value(bytes) -- 第二部分
......
keyn(xxx):value(xxx) -- 第二部分
回车 -- 第三部分
XXXXXX(服务器给你的响应数据)--第四部分
值得注意的:content-Length是返回内容长度;content-type是返回数据类型。
用chrome来听HTTP
这个方式其实很简单。
- 我们直接打开浏览器即可
- 开个新标签,打开F12,选择Network
- 在地址栏中输入www.baidu.com,然后回车
chrome查看HTTP.png - 点击这个www.baidu.com的GET,再点击 view source
chrome查看HTTP -1.png -
请求样式展现如图
请求样式.png -
响应样式选择Response Headers 再点击view source如图
响应样式.png -
各位稍微看看便知道,这里并没有响应的第四部分,第四部分要在Response里面看
response.png
说得并不是很深,并且很多地方可能会有错误,欢迎各位指出。