HTTP入门

188 阅读6分钟

1.什么是HTTP?

HTTP(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

2.HTTP的工作原理是什么?是做什么用的?

HTTP 的作用就是指导浏览器和服务器如何进行沟通。

简单的工作原理是:

  • 浏览器负责发起请求
  • 服务器在 80 端口接收请求
  • 服务器负责返回内容(响应)
  • 浏览器负责下载响应内容

注意:

  1. HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  2. HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。(更多关于的MIME-type内容类型的信息,自己搜索)
  3. HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

3.HTTP 请求包括哪些部分?如何用Chrome开发者工具查看 HTTP 请求内容?

请求的格式:

第一部分:动词 路径 协议/版本
第二部分:Key1: value1
                 Key2: value2
                 ... ...
                 Key n: value n
第三部分:
第四部分:要上传的数据

注意:

  1. 请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)
  2. 第三部分永远都是一个回车(\n),用来区分第二部分和第四部分
  3. 动词也是请求方法,有 GETPOST、PUT、PATCH、DELETE、HEAD、OPTIONS 等 (HTTP1.1)
  • GET: 从服务器获取内容
  • POST: 向服务器新增,上传内容
  • PUT: 整体更新,新上传的内容覆盖之前上传的所有内容
  • PATCH: 局部更新,将之前上传的部分内容替换为新上传的内容
  • DEMETE: 删除
  • HEAD: 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  • OPTIONS: 允许客户端查看服务器的性能。

       我们实际应用中常用到的只有 GETPOST,发出的请求包含数据就用 POST,不包含数据就用 GET

  1. 这里的路径必须以 / 开头,它包括「查询参数」,但不包括「锚点」。如果你没有写路径,那么路径默认为 /

  2. 第 2 部分中的 Content-Type 标注了第 4 部分的格式

使用Chrome开发者工具查看 HTTP 请求内容

  1. 打开 浏览器
  2. 右键空白处,点击 [检查]
  3. 点击上面一排中的 [Network]
  4. 地址栏输入网址,回车,在 Network 中会出现很多请求,点击请求的名称。
  5. 点击 [Request Headers],点击 [view source],你就会看到请求的前三部分。
  6. 如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到。

4.HTTP 响应包括哪些部分,如何用Chrome开发者工具查看 HTTP 响应内容?

响应的格式:

第一部分: 协议/版本号 状态码 状态解释
第二部分:Key1: value1
                 Key2: value2
                 ... ...
                 Key n: value n
第三部分:
第四部分:要下载的内容

注意:

  1. 状态码要背,是服务器对浏览器说的话
        - 1xx: 表示信息,服务器收到请求,需要请求者继续执行操作,不常用
        - 2xx: 表示成功,操作被成功接收并处理;200:普通成功(GET) 204:创建成功(POST)
        - 3xx: 表示重定向,需要进一步的操作以完成请求;301:永久的搬走了,第二部分会给个location:是搬过去的地                   址 302:临时的不存在 304:这一次的内容和上一次的内容一样
        - 4xx: 表示客户端错误,请求包含语法错误或无法完成请求 404
        - 5xx: 表示服务器错误,服务器在处理请求的过程中发生了错误 502、500
    更多的状态码点这里
  2. 状态解释没什么用
  3. 第 2 部分中的 Content-Type 标注了第 4 部分的格式
  4. 第 2 部分中的 Content-Type 遵循 MIME 规范

如何用Chrome开发者工具查看 HTTP 响应内容

  1. 打开 浏览器
  2. 右键空白处,点击 [检查]
  3. 点击上面一排中的 [Network]
  4. 地址栏输入网址,回车,在 Network 中会出现很多请求,点击请求的名称。
  5. 点击 [Responses Headers],点击 [view source],你就会看到响应的前三部分。
  6. 响应的第四部分在 Responses 里面可以看到。

如何使用 curl 命令

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

语法:curl(选项)-- "请求的网址" (注意 -- 后有一个空格)

选项:此处仅仅举例,更多内容点这里

  1. -a : 上传文件时,附加到目标文件
  2. -d : HTTP POST方式传送数据
  3. -G : 以get的方式来发送数据
  4. -H : 自定义头信息传递给服务器
  5. -s : 静默模式。不输出任何东西
  6. -v : 使提取更加冗长/啰嗦。主要用于调试。
  7. -X : 指定什么命令
    ... ...

使用
curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。如果系统没有curl可以使用yum install curl安装,也可以下载安装。curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用--silent选项。对于测试来讲,它是Web相关测试非常实用的工具,包括debugging,使用起来非常方便。


这只是HTTP入门,还有很多知识本文没有提到,后期会继续补充,如果本文对你有帮助,请推荐给更多需要帮助的人。