1.什么是HTTP?
HTTP(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
2.HTTP的工作原理是什么?是做什么用的?
HTTP 的作用就是指导浏览器和服务器如何进行沟通。
简单的工作原理是:
- 浏览器负责发起请求
- 服务器在 80 端口接收请求
- 服务器负责返回内容(响应)
- 浏览器负责下载响应内容
注意:
- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。(更多关于的MIME-type内容类型的信息,自己搜索)
- HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
3.HTTP 请求包括哪些部分?如何用Chrome开发者工具查看 HTTP 请求内容?
请求的格式:
第一部分:动词 路径 协议/版本
第二部分:Key1: value1
Key2: value2
... ...
Key n: value n
第三部分:
第四部分:要上传的数据
注意:
- 请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)
- 第三部分永远都是一个回车(\n),用来区分第二部分和第四部分
- 动词也是请求方法,有 GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS 等 (HTTP1.1)
- GET: 从服务器获取内容
- POST: 向服务器新增,上传内容
- PUT: 整体更新,新上传的内容覆盖之前上传的所有内容
- PATCH: 局部更新,将之前上传的部分内容替换为新上传的内容
- DEMETE: 删除
- HEAD: 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- OPTIONS: 允许客户端查看服务器的性能。
我们实际应用中常用到的只有 GET 和 POST,发出的请求包含数据就用 POST,不包含数据就用 GET。
-
这里的路径必须以 / 开头,它包括「查询参数」,但不包括「锚点」。如果你没有写路径,那么路径默认为 /
-
第 2 部分中的 Content-Type 标注了第 4 部分的格式
使用Chrome开发者工具查看 HTTP 请求内容
- 打开 浏览器
- 右键空白处,点击 [检查]
- 点击上面一排中的 [Network]
- 地址栏输入网址,回车,在 Network 中会出现很多请求,点击请求的名称。
- 点击 [Request Headers],点击 [view source],你就会看到请求的前三部分。
- 如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到。
4.HTTP 响应包括哪些部分,如何用Chrome开发者工具查看 HTTP 响应内容?
响应的格式:
第一部分: 协议/版本号 状态码 状态解释
第二部分:Key1: value1
Key2: value2
... ...
Key n: value n
第三部分:
第四部分:要下载的内容
注意:
- 状态码要背,是服务器对浏览器说的话
- 1xx: 表示信息,服务器收到请求,需要请求者继续执行操作,不常用
- 2xx: 表示成功,操作被成功接收并处理;200:普通成功(GET) 204:创建成功(POST)
- 3xx: 表示重定向,需要进一步的操作以完成请求;301:永久的搬走了,第二部分会给个location:是搬过去的地 址 302:临时的不存在 304:这一次的内容和上一次的内容一样
- 4xx: 表示客户端错误,请求包含语法错误或无法完成请求 404
- 5xx: 表示服务器错误,服务器在处理请求的过程中发生了错误 502、500
更多的状态码点这里。 - 状态解释没什么用
- 第 2 部分中的 Content-Type 标注了第 4 部分的格式
- 第 2 部分中的 Content-Type 遵循 MIME 规范
如何用Chrome开发者工具查看 HTTP 响应内容
- 打开 浏览器
- 右键空白处,点击 [检查]
- 点击上面一排中的 [Network]
- 地址栏输入网址,回车,在 Network 中会出现很多请求,点击请求的名称。
- 点击 [Responses Headers],点击 [view source],你就会看到响应的前三部分。
- 响应的第四部分在 Responses 里面可以看到。
如何使用 curl 命令
curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。
语法:curl(选项)-- "请求的网址" (注意 -- 后有一个空格)
选项:此处仅仅举例,更多内容点这里。
- -a : 上传文件时,附加到目标文件
- -d : HTTP POST方式传送数据
- -G : 以get的方式来发送数据
- -H : 自定义头信息传递给服务器
- -s : 静默模式。不输出任何东西
- -v : 使提取更加冗长/啰嗦。主要用于调试。
- -X : 指定什么命令
... ...
使用:
curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。如果系统没有curl可以使用yum install curl安装,也可以下载安装。curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用--silent选项。对于测试来讲,它是Web相关测试非常实用的工具,包括debugging,使用起来非常方便。
这只是HTTP入门,还有很多知识本文没有提到,后期会继续补充,如果本文对你有帮助,请推荐给更多需要帮助的人。