HTTP 初步认识
HTTP 初步认识
什么是 HTTP?
HTTP 是一个简单的请求-响应协议
中文名: 超文本传输协议
全称: Hypertext Transfer Protocol
简单来说, HTTP , 两个电脑之间传输内容的协议;HTTP 的作用是让你能下载这个页面。
在1990年,HTTP就成为WWW的支撑协议。当时由其创始人WWW之父蒂姆·贝纳斯·李(TimBerners—Lee)提出。
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP进行通信的HTTP的实现程序。
HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、InternetExplorer、Google chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。
HTTP 请求
HTTP 请求包括哪些部分
请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)
例如,在命令行中, 使用 curl 发一个请求
curl -s -v -H "xxx:yyy" -- "https://www.baidu.com"

主要关注 ‘>’ 后的内容,
GET / HTTP/1.1 //动词路径协议/版本
Host: www.baidu.com //Key1: value1
User-Agent: curl/7.73.0 //Key2: value2
Accept: / //Key3: value3
xxx:yyy //属于自己编辑的,没有实际意义的信息
请求的格式
1 动词路径协议/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上传的数据
- 请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)
- 第三部分永远都是一个回车(
\n) - 动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 这里的路径包括「查询参数」,但不包括「锚点」
- 如果你没有写路径,那么路径默认为 /
- 第 2 部分中的 Content-Type 标注了第 4 部分的格式
使用Chrome开发者工具查看 HTTP 请求内容
- 在网页的页面上, 右键 ‘检查’
- 点击 Network
- 地址栏输入网址
- 在 Network 点击,查看 request,点击「view source」
- 如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到
HTTP响应
响应示例,上面的 GET 请求,

响应的格式
1 协议/版本号状态码状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容
第 2 部分中的 Content-Type 标注了第 4 部分的格式
第 2 部分中的 Content-Type 遵循 MIME 规范
状态码
状态码需要记忆
- 1xx 不常用
- 2xx 表示成功
- 3xx 表示滚吧
- 4xx 表示你丫错了
- 5xx 表示好吧,我错了
使用Chrome开发者工具查看 HTTP 响应内容
- 打开 Network
- 输入网址
- 选中第一个响应
- 查看 Response Headers,点击「view source」
- 你会看到响应的前两部分
- 查看 Response 或者 Preview,你会看到响应的第 4 部分
如何使用 curl 命令
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。
curl命令语法:
curl [options] [URL...]
例如上文用到的
curl -s -v -H "xxx:yyy" -- "https://www.baidu.com"
-s //安静模式下显示错误信息
-v //显示更详细的信息,调试时使用;
-H
-H "name: value" //(HTTP)添加一个http header(http请求头);
浙公网安备 33010602011771号