目录
[1.1 常见请求方法](#1.1 常见请求方法)
[1.1.1 GET方法(重点)](#1.1.1 GET方法(重点))
[1.1.2 POST方法(重点)](#1.1.2 POST方法(重点))
[1.1.3. PUT⽅法(不常⽤)](#1.1.3. PUT⽅法(不常⽤))
[1.1.4. HEAD⽅法](#1.1.4. HEAD⽅法)
[1.1.5. DELETE⽅法(不常⽤)](#1.1.5. DELETE⽅法(不常⽤))
[1.1.6. OPTIONS⽅法](#1.1.6. OPTIONS⽅法)
[2. 响应报文](#2. 响应报文)
[3. HTTP 响应头信息](#3. HTTP 响应头信息)
引言
在互联⽹世界中,HTTP(HyperText Transfer Protocol,超⽂本传输协议)是⼀个⾄关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超⽂本(如HTML⽂档)。
HTTP协议是客⼾端与服务器之间通信的基础。客⼾端通过HTTP协议向服务器发送请求,服务器收到请求后处理并返回响应。HTTP协议是⼀个⽆连接、⽆状态的协议,即每次请求都需要建⽴新的连接,且服务器不会保存客⼾端的状态信息。
认识URL

平时我们俗称的 "网址" 其实就是说的 URL
URL(统一资源定位符)的作用 是在互联网上唯一地标识并定位一个资源,同时指明访问该资源的方式。
简单来说,URL就是资源的"网络地址",就像现实世界中的门牌号+访问方式(比如"走正门")。它的主要作用包括:
-
唯一标识资源:每个URL对应互联网上的一个特定资源(如网页、图片、视频等),确保你能精准找到它。
-
提供定位信息:URL中包含了资源所在的服务器地址(域名或IP)、端口号(可选)、文件路径等,告诉浏览器或客户端"去哪里找"。
-
指定访问协议 :URL开头部分(如
http://、https://、ftp://)指明了使用哪种协议来获取资源,确保双方用相同的"语言"沟通。
例如,在 https://www.example.com/index.html 中:
-
https://表示使用HTTPS协议; -
www.example.com是服务器域名; -
/index.html是资源在服务器上的路径。
在TCP/IP协议族中,URL主要作用于应用层,浏览器等应用通过解析URL,结合DNS(域名系统)获取IP地址,再通过下层协议完成数据传输。
HTTP协议请求与响应格式
1.请求报文

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Connection: keep-alive
请求行: [方法] + [url] + [版本]
请求头: 请求的属性, 冒号分割的键值对;每组属性之间使⽤ \r\n 分隔;遇到空行表⽰ Header部分结束
**请求正文:**空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有⼀个Content-Length属性来标识Body的⻓度。
1.1 常见请求方法

1.1.1 GET方法(重点)
GET:请求指定的资源
⽤途:⽤于请求URL指定的资源。 示例: GET /index.html HTTP/1.1
特性:指定资源经服务器端解析后返回响应内容。
注意,GET也可以通过URL提交参数,例如:
http://www.example/login?username=xxx\&password=123456
当然,通过这种方式传递参数是非常危险的,因为是明文传递,所以一般不会用这种方式传递用户名密码等敏感内容,URL的长度也是有限制的,所以不能传递长数据。
1.1.2 POST方法(重点)
⽤途:⽤于传输实体的主体,通常⽤于提交表单数据。
示例: POST /submit.cgi HTTP/1.1
特性:可以发送⼤量的数据给服务器,并且数据包含在请求体中。
1.1.3. PUT⽅法(不常⽤)
⽤途:⽤于传输⽂件,将请求报⽂主体中的⽂件保存到请求URL指定的位置。
⽰例: PUT /example.html HTTP/1.1
特性:不太常⽤,但在某些情况下,如RESTful API中,⽤于更新资源。
1.1.4. HEAD⽅法
⽤途:与GET⽅法类似,但不返回报⽂主体部分,仅返回响应头。
⽰例: HEAD /index.html HTTP/1.1
特性:⽤于确认URL的有效性及资源更新的⽇期时间等。
1.1.5. DELETE⽅法(不常⽤)
⽤途:⽤于删除⽂件,是PUT的相反⽅法。
⽰例: DELETE /example.html HTTP/1.1特性:按请求URL删除指定的资源。
1.1.6. OPTIONS⽅法
⽤途:⽤于查询针对请求URL指定的资源⽀持的⽅法。
⽰例: OPTIONS * HTTP/1.1
特性:返回允许的⽅法,如GET、POST等。
2. 响应报文

HTTP/1.1 200 OK
Date: Wed, 18 Apr 2024 12:00:00 GMT
Server: Apache/2.4.1 (Unix)
Last-Modified: Wed, 18 Apr 2024 11:00:00 GMT
Content-Length: 12345
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Hello, World!</h1>
<!-- The rest of the HTML content -->
</body>
</html>
状态行: [版本号] + [状态码] + [状态码解释]
响应头: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\r\n分隔;遇到空⾏表⽰响应头部分结束
响应正文: 空⾏后⾯的内容都是响应正文 . 响应正文 允许为空字符串. 如果响应正文 存在, 则在响应头 中会有⼀个Content-Length属性来标识响应正文的⻓度; 如果服务器返回了⼀个html⻚⾯, 那么html⻚⾯内容就是在body中.
2.1状态码

具体状态码种类,及其含义可以参见该网站
重定向相关状态码
|-----|--------------------|----------|-------------------------------|
| 状态码 | 含义 | 是否为临时重定向 | 应⽤样例 |
| 301 | Moved Permanently | 否(永久重定向) | ⽹站换域名后,⾃动跳转到新域名;搜索引擎更新⽹站链接时使⽤ |
| 302 | Found 或 See Other | 是(临时重定向) | ⽤⼾登录成功后,重定向到⽤⼾⾸⻚ |
| 307 | Temporary Redirect | 是(临时重定向) | 临时重定向资源到新的位置(较少使⽤) |
| 308 | Permanent Redirect | 否(永久重定向) | 永久重定向资源到新的位置(较少使⽤) |
HTTP状态码301(永久重定向)和302(临时重定向)都依赖Location选项。以下是关于两者依赖Location选项的详细说明: HTTP状态码301(永久重定向)
• 当服务器返回HTTP 301状态码时,表⽰请求的资源已经被永久移动到新的位置。
• 在这种情况下,服务器会在响应中添加⼀个Location头部,⽤于指定资源的新位置。这个Location头部包含了新的URL地址,浏览器会⾃动重定向到该地址。
• 例如,在HTTP响应中,可能会看到类似于以下的头部信息:
HTTP/1.1 301 Moved Permanently\r\n
Location: https://www.new-url.com\r\n
HTTP状态码302(临时重定向)
• 当服务器返回HTTP 302状态码时,表⽰请求的资源临时被移动到新的位置。
• 同样地,服务器也会在响应中添加⼀个Location头部来指定资源的新位置。浏览器会暂时使⽤新的URL进⾏后续的请求,但不会缓存这个重定向。
• 例如,在HTTP响应中,可能会看到类似于以下的头部信息:
HTTP/1.1 302 Found\r\n
Location: https://www.new-url.com\r\n
总结:⽆论是HTTP 301还是HTTP 302重定向,都需要依赖Location选项来指定资源的新位置。这个Location选项是⼀个标准的HTTP响应头部,⽤于告诉浏览器应该将请求重定向到哪个新的URL地址。
3. HTTP 响应头信息
• Content-Type: 数据类型(text/html等)
• Content-Length: Body的⻓度
• Host: 客⼾端告知服务器, 所请求的资源是在哪个主机的哪个端⼝上;
• User-Agent: 声明⽤⼾的操作系统和浏览器版本信息;
• Referer: 当前⻚⾯是从哪个⻚⾯跳转过来的;
• Location: 搭配3xx状态码使⽤, 告诉客⼾端接下来要去哪⾥访问;
• Cookie: ⽤于在客⼾端存储少量信息. 通常⽤于实现会话(session)的功能;
更多响应头信息可见
关于connection报头
HTTP中的Connection字段是HTTP报文头的一部分,它主要用于控制和管理客户端与服务器之间的连接状态。
核心作用
- 管理持久连接: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连接。
那么本期的内容就到这里了,觉得有收获的同学们可以给个点赞、评论、关注、收藏哦,谢谢大家。