一、介绍

  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(服务器错误状态码)

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

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

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

更多推荐