一、介绍

  1. HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至 关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输 超文本(如 HTML 文档)。
  2. HTTP 协议是客户端与服务器之间通信的基础。客户端通过 HTTP 协议向服务器发送 请求,服务器收到请求后处理并返回响应。HTTP 协议是一个无连接、无状态的协 议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息。
  3. HTTP版本
    存在HTTP0.9、HTTP1.0、HTTP1.1、HTTP/2、HTTP/3。目前最广泛使用的HTTP1.1版本。

二、URL

1、介绍

URL(Uniform ResourceLocator,统一资源定位符)是一种用于标识互联网上资源位置的标准地址格式。它为用户提供了一种简单而统一的方式来访问网络上的各种资源,如网页、图片、视频、文件等。

2、构成

  1. 协议(Scheme):定义了访问资源所使用的协议类型,常见的协议包括:
    http://:超文本传输协议(HTTP),用于访问普通网页。
    https://:安全的超文本传输协议(HTTPS),用于加密的网页访问。
  2. 主机名(Host):标识资源所在的服务器地址,可以是域名(如www.example.com)或IP地址(如192.168.1.1)。
  3. 端口号(Port):指定服务器上运行的服务端口。如果省略,默认使用协议的标准端口(如HTTP的80端口,HTTPS的443端口)。
  4. 路径(Path):指定服务器上资源的具体位置,通常以/开头,例如/index.html。
  5. 查询字符串(Query):用于向服务器传递额外的参数,通常以?开头,参数以key=value的形式出现,多个参数之间用&分隔。例如?id=123&name=Kimi。
  6. 锚点(Fragment):用于定位页面内的某个特定部分,以#开头,例如#section1。
  7. 一个完整的URL示 例:http://www.xxxx.com:port/path/to/resource?query=parameter#anchor

3、作用

  1. 资源定位:URL能够精确地定位到互联网上的某个资源,无论是网页、图片、文件还是其他类型的资源。
  2. 资源访问:通过URL,用户可以使用浏览器或其他工具访问指定的资源。
  3. 链接功能:在网页中,URL被广泛用于创建超链接,方便用户从一个页面跳转到另一个页面。
  4. 参数传递:查询字符串部分可以向服务器传递动态参数,用于实现搜索、分页、用户登录等功能。

4、关于编码

  1. 像 / ? : 等这样的字符, 已经被 url 当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。
  2. 转义的规则如下: 将需要转码的字符转为 16 进制,然后从右到左,取 4 位(不足 4 位直接处理),每 2 位做一位,前面加上%,编码成%XY 格式,例如: ‘+’ ->%2B。

三、HPPT的报头

1、请求报头

  1. 首行: [方法] + [url] + [版本]。
  2. Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\r\n 分隔;遇到空行表示 Header 部分结束。
  3. Body: 空行后面的内容都是 Body, Body 允许为空字符串. 如果 Body 存在, 则在Header 中会有一个 Content-Length 属性来标识 Body 的长度。

在这里插入图片描述
请求方法:

  1. GET
    用途:请求服务器返回指定资源的内容。
    特点:
    是最常用的HTTP请求方法。
    请求参数通常通过URL的查询字符串传递(传递账号密码时可能存在安全隐患)。
    应该只用于获取资源,不产生副作用(幂等:一个幂等操作,执行一次和执行多次的效果是相同的。)。
    可以被缓存,可以保存书签,可以被搜索引擎索引。
    Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。
    支持版本:HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3。

  2. POST
    用途:向服务器提交数据以创建或更新资源。
    特点:
    用于提交表单数据、上传文件或触发某些操作。
    数据通常包含在请求体中(传递账号密码私密,相对安全)。
    不幂等,多次请求可能会产生不同的结果。
    不会被缓存,不会保存在浏览器历史记录中。
    理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力,而并非限制。
    支持版本:HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3。

  3. PUT
    用途:向服务器上传或更新指定资源的内容。
    特点:
    用于替换目标资源的全部内容。
    如果资源不存在,可能会创建新资源。
    是幂等的,多次请求的结果相同。 数据包含在请求体中。
    支持版本:HTTP/1.1、HTTP/2、HTTP/3。

  4. DELETE
    用途:请求服务器删除指定的资源。
    特点:
    用于删除资源,如文件或数据库记录。
    是幂等的,多次删除操作的结果相同。
    不会返回被删除的资源内容,通常返回204(No Content)或200(OK)状态码。
    支持版本:HTTP/1.1、HTTP/2、HTTP/3。

  5. HEAD
    用途:请求服务器返回指定资源的头部信息,但不返回资源内容。
    特点:
    与GET方法类似,但只返回响应头,不返回响应体。
    用于检查资源是否存在或获取资源的元数据(如最后修改时间、内容类型等) 是幂等的。
    支持版本:HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3。

  6. OPTIONS
    用途:请求服务器返回目标资源所支持的HTTP方法列表。
    特点:
    用于查询服务器支持的HTTP方法。
    常用于跨域资源共享(CORS)预检请求。
    返回的响应头中包含Allow字段,列出支持的方法。
    支持版本:HTTP/1.1、HTTP/2、HTTP/3。

  7. PATCH
    用途:对指定资源进行部分修改。
    特点:
    用于对资源进行局部更新,而不是替换整个资源。
    数据通常包含在请求体中,描述需要修改的部分。
    不幂等,多次请求可能会产生不同的结果。
    支持版本:HTTP/1.1、HTTP/2、HTTP/3。

  8. CONNECT
    用途:用于建立一个隧道(Tunnel)到目标服务器。
    特点: 主要用于代理服务器或建立加密连接(如HTTPS)。
    不直接操作资源,而是用于建立底层连接。
    支持版本:HTTP/1.1、HTTP/2、HTTP/3。

  9. TRACE
    用途:用于回显服务器收到的请求消息,主要用于调试。
    特点:
    返回的内容是服务器收到的原始请求。 由于安全原因,很少被支持或启用。
    支持版本:HTTP/1.1、HTTP/2(不推荐使用)。

2、响应报头

  1. 首行: [版本号] + [状态码] + [状态码解释] 。
  2. Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\r\n 分隔;遇到空行表示 Header 部分结束。
  3. Body: 空行后面的内容都是 Body. Body 允许为空字符串. 如果 Body 存在, 则在Header 中会有一个 Content-Length 属性来标识 Body 的长度; 如果服务器返回了一个 html 页面, 那么 html 页面内容就是在
    body 中。

在这里插入图片描述
常见状态码

1xx(信息性状态码)
2xx(成功状态码)
3xx(重定向状态码)
4xx(客户端错误状态码)
5xx(服务器错误状态码)

状态码 状态码描述 含义
100 Continue 100 Continue 上传大文件时,服务器告诉客户端可以继续上传
200 OK 访问网站首页,服务器返回网页内容
201 Created 发布新文章,服务器返回文章创建成功的信息
204 No Content 删除文章后,服务器返回“无内容”表示操作成功
301 MovedPermanently 网站换域名后,自动跳转到新域名;搜索引擎更新网站链接时使用,永久重定向,依赖 Location 选项
302 Found 或 SeeOther 用户登录成功后,重定向到用户首页,临时重定向,依赖 Location 选项
304 Not Modified 浏览器缓存机制,对未修改的资源返回
400 Bad Request 填写表单时,格式不正确导致提交失败
401 Unauthorized 访问需要登录的页面时,未登录或认证失败
403 Forbidden 尝试访问你没有权限查看的页面
404 Not Found 访问不存在的网页链接
500 Internal ServerError 服务器崩溃或数据库错误导致页面无法加载
502 Bad Gateway 使用代理服务器时,代理服务器无法从上游服务器获取有效响应
503 ServiceUnavailable 服务器维护或过载,暂时无法处理请求

3、Header

  1. Content-Type: 数据类型(text/html 等) 。
  2. Content-Length: Body 的长度。
  3. Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上。
  4. User-Agent: 声明用户的操作系统和浏览器版本信息。
  5. referer: 当前页面是从哪个页面跳转过来的。
  6. Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问。
  7. Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能。
  8. connection:主要用于控制和管理客户端与服务器之间的连接状态
    管理持久连接:Connection 字段还用于管理持久连接(也称为长连接)。持久连接允许客户端和服务器在请求/响应完成后不立即关闭 TCP 连接,以便在同一个连接上发送多个请求和接收多个响应。
    持久连接(长连接):HTTP/1.1:在 HTTP/1.1 协议中,默认使用持久连接。当客户端和服务器都不明确指定关闭连接时,连接将保持打开状态,以便后续的请求和响应可以复用同一个连接,HTTP/1.0:在 HTTP/1.0 协议中,默认连接是非持久的。如果希望在 HTTP/1.0上实现持久连接,需要在请求头中显式设置 Connection: keep-alive。
    语法格式:
    Connection: keep-alive:表示希望保持连接以复用 TCP 连接。
    Connection: close:表示请求/响应完成后,应该关闭 TCP 连接。
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐