【计算机网络】HTTP 协议入门——万字详解!
文章目录
- 【计算机网络】HTTP 协议入门——万字详解!
- 1. HTTP 协议简介
- 1.1 什么是 HTTP?
- 1.2 HTTP 的核心特点
- 1.3 HTTP 和 HTTPS 的区别
- 1.4 HTTP 的版本
- 2. HTTP 协议的工作过程
- 2.1 HTTP 通信的完整流程
- 2.2 HTTP 通信的基础术语
- 2.3 HTTP 交互的举例说明
- 3. HTTP 请求(Request)
- 3.1 URL 介绍
- 3.2 请求方法(Method)
- 4. HTTP 响应(Response)
- 4.1 状态码(Status Code)
- 1.常见状态码
- 4.2 响应报头(Header)
- 1.常见响应头
- 5. HTTPS(HyperText Transfer Protocol Secure)
- 5.1 HTTPS 的主要功能
- 5.2 HTTPS 的工作原理
- 5.3 HTTP 与 HTTPS 的对比
- 5.4 HTTPS 的缺点
- 5.5 如何实现 HTTPS
- 5.6 HTTPS 的常见问题
- 其他
1. HTTP 协议简介
1.1 什么是 HTTP?
HTTP(HyperText Transfer Protocol) 是超文本传输协议,它是万维网的基础,主要用于客户端(如浏览器)与服务器之间的数据交换。HTTP 协议在网络通信中扮演着“桥梁”的角色,负责将用户的请求传递到服务器,并将服务器的响应返回给客户端。
HTTP 协议运行在 应用层,依赖 TCP/IP 协议栈进行数据的可靠传输。这种分层设计使得 HTTP 只需关注数据内容,而将传输的复杂性交给下层协议处理。
1.2 HTTP 的核心特点
HTTP 协议的设计具有以下几个核心特点,使得它成为互联网中最广泛使用的协议之一:
-
无状态性(Stateless)
- HTTP 协议是无状态的,这意味着每次请求都是独立的,服务器不会自动保存任何前一次请求的上下文信息。
- 这种无状态设计简化了服务器的实现,但为了满足需要“记住”用户状态的场景(如登录),可以通过 Cookie 或 Session 等机制实现状态管理。
-
请求-响应模型(Request-Response Model)
- HTTP 是基于请求-响应的协议。客户端发送 HTTP 请求 (Request),服务器处理并返回一个 HTTP 响应 (Response)。
- 每次交互由以下流程组成:客户端发起请求,服务器解析请求并生成响应,然后将数据返回给客户端。
-
灵活性(Flexibility)
- HTTP 支持传输多种类型的数据,如纯文本(text/html)、图片(image/jpeg)、音频(audio/mp3)、视频(video/mp4)等。
- 数据类型由响应中的 Content-Type 字段指定,客户端会根据这个字段解析内容。
-
无连接性(Connectionless)
- HTTP 协议在早期版本中是无连接的,即每次请求完成后,连接就会关闭。
- 从 HTTP/1.1 开始,加入了 Keep-Alive 机制,使得连接可以被复用,从而提高了效率。
-
可扩展性(Extensibility)
- HTTP 协议支持通过自定义头部字段或扩展功能(如 WebSocket)来满足新的需求。这种设计让 HTTP 能够不断适应互联网的变化。
-
跨平台性与普适性
- HTTP 是与平台无关的协议,几乎所有支持网络通信的设备和编程语言都可以实现 HTTP 客户端或服务器。
1.3 HTTP 和 HTTPS 的区别
HTTP 的通信是明文的,数据在传输过程中容易被截获或篡改,而 HTTPS(HTTP Secure) 是基于 HTTP 协议的一种安全协议,通过加入 SSL/TLS 加密层确保数据安全性。
主要区别如下:
特性 | HTTP | HTTPS |
---|---|---|
安全性 | 数据明文传输,易被窃听或篡改 | 数据加密传输,确保机密性和完整性 |
端口号 | 默认端口为 80 | 默认端口为 443 |
加密机制 | 无 | 通过 SSL/TLS 加密 |
性能 | 较快,但不安全 | 略慢(需要加解密),但更安全 |
1.4 HTTP 的版本
HTTP 协议在不断迭代中发展,主要版本包括:
-
HTTP/1.0
- 引入基本的请求-响应模型。
- 每次请求都会新建一个连接,请求结束后关闭连接,效率较低。
-
HTTP/1.1
- 默认支持 持久连接(Keep-Alive),提升了性能。
- 引入了 管线化(Pipelining),允许客户端在等待响应的同时发送多个请求(虽然实际应用较少)。
-
HTTP/2.0
- 基于二进制帧传输数据,替代了传统的文本格式。
- 支持 多路复用(Multiplexing),在单个连接上同时传输多个请求和响应,避免了 HTTP/1.x 的“队头阻塞”问题。
- 引入了 服务器推送(Server Push),允许服务器主动向客户端发送资源,减少延迟。
-
HTTP/3.0
- 基于 QUIC 协议(使用 UDP),进一步提升传输效率和可靠性。
- 解决了 TCP 的一些固有问题,如握手延迟和连接迁移问题。
2. HTTP 协议的工作过程
HTTP 协议在客户端(如浏览器、移动应用等)和服务器之间按照“请求-响应”模型进行通信。
2.1 HTTP 通信的完整流程
1. DNS 解析
用户在浏览器中输入的网址(如 www.example.com
)是一个域名。计算机无法直接识别域名,需要通过 DNS(域名系统)解析将域名转换为服务器的 IP 地址。例如:www.example.com
→ 192.168.1.1
。
- 工作机制:
1.浏览器先查询本地 DNS 缓存中是否有对应的记录。
2.如果没有,向本地 DNS 服务器发起查询,逐级请求权威 DNS 服务器,直到获取 IP 地址。
2. 建立连接
客户端通过 TCP 三次握手 与服务器建立连接,确保数据传输的可靠性。
- 三次握手的过程:
1.客户端发送 SYN 报文,表示希望建立连接。
2.服务器收到后,返回 SYN-ACK 报文,表示同意建立连接。
3.客户端再发送 ACK 报文,确认连接成功。
在 HTTPS 中,还会增加 TLS 握手流程,完成加密通信的密钥协商。
3. 发送 HTTP 请求
连接建立后,客户端向服务器发送 HTTP 请求报文。请求报文包括以下几个部分:
-
请求行(Request Line)
- 指定客户端希望服务器执行的操作。
- 结构:
- 方法:如 GET、POST、PUT、DELETE,指示请求的操作类型。
- 请求 URI:目标资源的路径,包括主机名、端口号(如非默认)、资源路径和查询字符串。
- HTTP 版本:指定所使用的 HTTP 协议版本(如 HTTP/1.1、HTTP/2)。
- 示例:
GET /index.html HTTP/1.1
-
请求头(Request Headers)
- 包含客户端的元信息,用于说明请求的上下文。
- 常见的请求头:
- Host:目标服务器的主机名(必须包含端口号,若非默认)。
- User-Agent:标识客户端类型(如浏览器或其他工具)。
- Accept:客户端可接受的响应内容类型。
- Accept-Encoding:客户端支持的压缩编码(如 gzip、deflate)。
- Content-Length:请求体的长度(如有)。
-
空行
- 请求头和请求体之间的分隔符,表示请求头部分结束。
-
请求体(Request Body,非必需)
- 适用于 POST 和 PUT 等方法,用于传递数据(如表单、JSON 数据等)。
例如,打开百度,需要向百度的服务器发送一个GET请求来获取页面,用抓包软件抓到了这个 Request 数据包,如下
GET / HTTP/1.1
Host: www.baidu.com
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Connection: keep-alive(空行,表示结束请求头)
4. 服务器处理请求并返回 HTTP 响应
服务器接收到请求后,解析请求报文,根据 URI 定位目标资源,执行相应操作(如读取文件或查询数据库),然后生成 HTTP 响应报文并返回给客户端。
一个完整的 HTTP 响应消息也由四部分组成:
-
状态行(Status Line)
- 表明响应结果的状态信息。
- 结构:
- HTTP 版本:与请求的版本匹配。
- 状态码:三位数字,表示请求的处理结果(如 200 表示成功,404 表示资源未找到)。
- 状态信息:状态码的描述。
- 示例:
HTTP/1.1 200 OK
-
响应头(Response Headers)
- 包含服务器的元信息,用于说明响应的上下文。
- 常见的响应头:
- Content-Type:响应体的内容类型(如 text/html、application/json)。
- Content-Length:响应体的大小(字节数)。
- Server:提供服务的服务器软件信息(如 Apache、Nginx)。
- Set-Cookie:设置客户端的 Cookie 信息。
-
空行
- 响应头和响应体之间的分隔符,表示响应头部分结束。
-
响应体(Response Body,非必需)
- 包含返回的数据内容,如 HTML 页面、JSON 数据、图片等。
响应报文的一般格式
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
Server: Apache/2.4.41 (Ubuntu) (空行,表示结束响应头)
<html><head><title>Example</title></head><body>Welcome to the Lingbou blog!</body>
</html>
5. 关闭或保持连接
- 如果启用了 Keep-Alive(HTTP/1.1 默认开启),连接会保持一段时间,供后续请求复用,减少握手延迟。
- 如果未启用或超时,连接将被关闭。
2.2 HTTP 通信的基础术语
-
客户端(Client)
- 发起请求的一端,通常是浏览器、移动端应用或其他工具(如 Postman)。
- 客户端的主要任务是生成请求报文并解析服务器返回的响应内容。
-
服务器(Server)
- 接收并处理请求的一端,通常是 Web 服务器(如 Apache、Nginx、IIS 等)。
- 服务器负责根据请求生成响应数据并返回给客户端。
-
请求(Request)
- 请求报文由客户端构造并发送给服务器,通常包含请求方法(如 GET、POST)、目标 URL 及附加数据(如请求头和请求体)。
-
响应(Response)
- 响应报文由服务器生成并返回给客户端,通常包含状态信息(如 200 OK、404 Not Found)及资源数据(如 HTML 页面或 JSON 数据)。
2.3 HTTP 交互的举例说明
假设用户访问 https://www.example.com/login
,以下是每个步骤的具体表现:
-
DNS 解析
- 域名
www.example.com
解析为 IP 地址192.0.2.1
。
- 域名
-
TCP 连接
- 客户端与
192.0.2.1
建立 TCP 连接,三次握手完成。
- 客户端与
-
发送请求
- 客户端发送 HTTP GET 请求:
GET /login HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/96.0 Accept: text/html
-
服务器响应
- 服务器返回 HTTP 响应:
HTTP/1.1 200 OK Content-Type: text/html Content-Length: 1024 <html><head><title>Login</title></head><body>Welcome to the Lingbou blog.</body></html>
-
页面显示
- 浏览器解析 HTML 代码,并向服务器请求页面中的附加资源(如 CSS 文件、图片)。最终显示完整的登录页面。
3. HTTP 请求(Request)
3.1 URL 介绍
URL(Uniform Resource Locator) 是统一资源定位符,用于描述网络资源的地址和访问方法。
URL 的格式 :
协议://[凭证信息@]服务器地址[:端口号][/资源路径][?查询参数][#片段标识符]
URL 各部分解析
协议:
- 指定数据传输的方式,常见协议包括 HTTP、HTTPS、FTP 等。
- 示例:
http://
或https://
凭证信息(可选):
- 包括用户名和密码,用于授权访问。
- 格式:
username:password@
- 示例:
ftp://user:pass@ftp.example.com
服务器地址:
- 表示目标主机,可以是域名(如
www.example.com
)或 IP 地址(如192.168.1.1
)。端口号(可选):
- 指定服务监听的端口,默认端口为
80
(HTTP)或443
(HTTPS)。- 示例:
http://www.example.com:8080
资源路径:
- 服务器资源的具体位置,如文件路径或接口路径。
- 示例:
/path/to/resource
查询参数(可选):
- 使用
?
开头,以键值对的形式传递参数,多个参数用&
分隔。- 示例:
?key1=value1&key2=value2
片段标识符(可选):
- 使用
#
开头,用于定位页面中的某一部分。- 示例:
#section1
URL 示例:
https://www.example.com:443/api/v1/resource?user=alice&action=view#details
- 协议:
https
- 服务器地址:
www.example.com
- 端口号:
443
- 资源路径:
/api/v1/resource
- 查询参数:
user=alice&action=view
- 片段标识符:
details
3.2 请求方法(Method)
HTTP 定义了一系列请求方法,用于描述客户端对资源的操作。
以下表格概述了常见请求方法的功能及其特点:
序号 | 方法 | 描述 | 是否幂等 | 是否安全 | 常见用途 |
---|---|---|---|---|---|
1 | GET | 从服务器获取资源,用于请求数据而不对其进行更改。例如:获取网页、图片等。 | 是 | 是 | 获取网页、文件、数据 |
2 | POST | 向服务器发送数据以创建新资源。常用于提交表单或上传文件,数据包含在请求体中。 | 否 | 否 | 表单提交、数据上传 |
3 | PUT | 更新或替换服务器上的资源,如果资源不存在则创建。通常是幂等的。 | 是 | 否 | 文件覆盖更新、新建资源 |
4 | DELETE | 从服务器删除指定资源,使用资源标识符指定要删除的内容。 | 是 | 否 | 删除文件或数据 |
5 | PATCH | 对资源进行部分修改,只更改资源的一部分而不是替换整个资源。 | 否 | 否 | 部分更新资源 |
6 | HEAD | 类似于 GET,但只返回响应头部,不返回实际数据。常用于检查资源的元数据。 | 是 | 是 | 检查资源状态或存在性 |
7 | OPTIONS | 返回服务器支持的 HTTP 方法,常用于跨域资源共享(CORS)中的预检请求。 | 是 | 是 | 检查支持的请求方法 |
8 | TRACE | 回显服务器收到的请求,用于诊断 HTTP 请求在服务器的处理路径。 | 是 | 否 | 请求调试 |
9 | CONNECT | 建立一个到服务器的隧道,通常用于 HTTPS 连接,可通过隧道发送加密数据。 | 否 | 否 | HTTPS 代理隧道 |
GET方法与POST方法对比
对比项 | GET | POST |
---|---|---|
数据传递方式 | 数据附加在 URL 查询参数中,格式如 ?key=value ,数据暴露在地址栏。 | 数据包含在请求体中,适合传输大数据或复杂结构。 |
幂等性 | 是幂等的,多次相同请求不会改变服务器状态。 | 不是幂等的,每次请求可能都会改变服务器状态(如提交订单)。 |
缓存机制 | 通常会被浏览器缓存,可重复利用相同资源。 | 默认不被缓存,更适合提交动态数据。 |
数据长度限制 | 受 URL 长度限制(通常为 2048 字节)。 | 理论上无长度限制,实际取决于服务器配置。 |
安全性 | 参数暴露在 URL 中,不适合传输敏感数据。 | 数据包含在请求体中,结合 HTTPS 加密传输更安全。 |
幂等性的定义 :一个操作是幂等的,意味着无论执行一次还是多次,产生的结果都是相同的,对服务器的状态没有额外的副作用。
HTTP 请求中的幂等性
- GET:幂等的,每次请求只读取资源,不会修改服务器的状态。例如,访问某网页多次,返回的内容是一样的。
- PUT:幂等的,执行多次更新相同资源的请求,最终结果是一样的。例如,将某资源的值更新为 10,无论请求一次还是多次,最终结果都是 10。
- DELETE:幂等的,多次删除相同资源,最终结果是资源被删除。
- POST:非幂等的,每次请求可能都会创建新的资源或产生副作用。例如,重复提交订单可能会多次扣款或创建多个订单。
GET 示例
GET /search?q=HTTP HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
POST 示例
POST /api/login HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 47 {"username":"alice","password":"secure123"}
请求方法扩展
- PATCH:只更改资源部分数据,例如修改用户的部分信息而不是覆盖整个用户记录。
- OPTIONS:在跨域请求中,用于检查目标服务器支持哪些请求方法。
- TRACE:用于调试网络请求,查看请求路径是否被修改。
- CONNECT:用于建立 HTTPS 隧道,通过代理服务器加密数据。
4. HTTP 响应(Response)
4.1 状态码(Status Code)
HTTP 状态码是服务器用于表示请求处理结果的三位数字代码。状态码分为五大类,每类代表不同的处理结果。
状态码分类
分类 | 分类描述 |
---|---|
1xx | 信息性响应:服务器收到请求,需请求者继续操作 |
2xx | 成功:请求被成功处理 |
3xx | 重定向:需进一步操作以完成请求 |
4xx | 客户端错误:请求包含语法错误或无法完成 |
5xx | 服务器错误:服务器在处理请求时发生错误 |
1.常见状态码
状态码 | 描述 | 详细说明 |
---|---|---|
200 | OK | 请求成功,通常用于 GET 或 POST 请求 |
201 | Created | 资源已成功创建(用于 POST 或 PUT ) |
204 | No Content | 请求成功,无返回内容 |
301 | Moved Permanently | 资源永久重定向到新 URL |
302 | Found | 资源暂时重定向到新 URL |
304 | Not Modified | 客户端缓存资源未改变,无需重新获取 |
400 | Bad Request | 客户端请求有语法错误,服务器无法处理 |
401 | Unauthorized | 请求未授权,需身份验证 |
403 | Forbidden | 服务器拒绝执行请求 |
404 | Not Found | 请求的资源不存在 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
502 | Bad Gateway | 网关收到无效响应 |
503 | Service Unavailable | 服务器超载或维护中,暂时不可用 |
4.2 响应报头(Header)
响应头包含有关响应的元数据,描述服务器返回的内容和状态。
1.常见响应头
头部字段 | 描述 | 示例 |
---|---|---|
Date | 响应生成时间 | Wed, 29 Nov 2024 12:00:00 GMT |
Server | 服务器软件信息 | Apache/2.4.1 (Unix) |
Content-Type | 响应内容的媒体类型(MIME 类型) | text/html; charset=UTF-8 |
Content-Length | 响应内容的长度,单位为字节 | 3145 |
Content-Encoding | 响应体的压缩方式 | gzip 或 deflate |
Content-Language | 响应内容的语言 | zh-CN |
Cache-Control | 缓存控制指令 | no-cache 、max-age=3600 |
Connection | 连接选项(保持活跃或关闭) | keep-alive 或 close |
Set-Cookie | 设置客户端的 Cookie 信息 | sessionId=abc123; Path=/; Secure |
ETag | 资源版本标识符,用于缓存验证 | "33a64df551425fcc55e6" |
Last-Modified | 资源最后修改时间 | Wed, 29 Nov 2024 11:00:00 GMT |
Location | 重定向目标的 URI | /new-resource |
Strict-Transport-Security | 强制 HTTPS 安全策略 | max-age=31536000; includeSubDomains |
X-Frame-Options | 防止点击劫持攻击 | SAMEORIGIN 或 DENY |
X-Content-Type-Options | 禁止浏览器推测 MIME 类型 | nosniff |
X-XSS-Protection | 浏览器的 XSS 保护指令 | 1; mode=block |
示例 HTTP 响应
响应成功(200 OK)
HTTP/1.1 200 OK
Date: Wed, 29 Nov 2024 12:00:00 GMT
Server: Apache/2.4.1 (Unix)
Content-Type: text/html; charset=UTF-8
Content-Length: 1234<html><body>Hello, World!</body>
</html>
资源未找到(404 Not Found)
HTTP/1.1 404 Not Found
Date: Wed, 29 Nov 2024 12:00:00 GMT
Server: Apache/2.4.1 (Unix)
Content-Type: text/html; charset=UTF-8
Content-Length: 153<html><body>Resource not found!</body>
</html>
5. HTTPS(HyperText Transfer Protocol Secure)
HTTPS 是 HTTP 的安全版本,通过 SSL/TLS 协议对数据进行加密,保护传输数据的 保密性、完整性 和 身份真实性。它是现代互联网通信安全的核心技术。
5.1 HTTPS 的主要功能
-
加密
HTTPS 通过加密算法保护数据在传输过程中的隐私性,防止被第三方窃听:- 对称加密:通信双方使用相同的密钥对数据加密和解密,速度快但密钥需要安全传递。
- 非对称加密:服务器提供公钥,客户端用公钥加密数据,服务器用私钥解密数据,用于解决密钥分发问题。
- 实际通信中,两种加密方式配合使用:非对称加密用于密钥交换,对称加密用于数据传输。
-
数据完整性
通过 消息摘要算法(如 SHA-256)生成哈希值,验证数据是否在传输过程中被篡改。如果数据被篡改,哈希值校验不匹配,通信会被终止。 -
身份验证
HTTPS 使用 数字证书 来验证服务器的身份。- 数字证书由 权威证书颁发机构(CA) 签发,包含服务器的公钥和域名信息。
- 浏览器通过验证证书的合法性(如是否由可信 CA 签发、证书是否过期)确保通信目标是预期的服务器,防止 中间人攻击。
5.2 HTTPS 的工作原理
HTTPS 使用 SSL/TLS 协议,主要分为两个阶段:握手阶段和数据传输阶段。
1. 握手阶段
客户端与服务器协商通信方式和加密方式的过程:
- 客户端向服务器发送请求,包含支持的加密算法列表和随机数(用于生成密钥)。
- 服务器返回自己的数字证书(包含公钥)和一个随机数。
- 客户端验证证书的合法性(CA 签名、域名匹配、有效期等)。
如果验证通过,客户端生成一个新的随机数并使用服务器的公钥加密后发送给服务器。 - 服务器用私钥解密随机数,三组随机数生成 会话密钥,用于后续对称加密。
2. 数据传输阶段
握手完成后,客户端和服务器使用对称加密的会话密钥加密数据进行通信,确保数据高效传输和安全性。
5.3 HTTP 与 HTTPS 的对比
特性 | HTTP | HTTPS |
---|---|---|
安全性 | 明文传输,容易被窃取和篡改 | 加密传输,防止窃听、篡改和中间人攻击 |
端口号 | 默认使用 80 | 默认使用 443 |
身份验证 | 无验证机制,可能遭遇中间人攻击 | 通过数字证书验证服务器身份 |
性能 | 无加密开销,响应速度快 | 加解密增加 CPU 和内存开销 |
适用场景 | 静态内容传输、不涉及隐私和敏感数据 | 涉及敏感数据(登录、支付、隐私数据) |
5.4 HTTPS 的缺点
-
性能开销:
- 加解密过程需要更多计算资源,增加了服务器和客户端的 CPU 和内存消耗。
- 特别是在高并发场景下,性能影响更明显。
- TLS 1.3 版本优化了握手过程,性能影响已显著降低。
-
证书成本:
- 获取权威 CA 签发的证书需要支付费用。
- 不过免费 CA(如 Let’s Encrypt)为许多小型网站提供免费证书。
-
部署复杂性:
- HTTPS 需要正确配置服务器、证书和加密协议。
- 还需定期更新证书以保持其有效性。
5.5 如何实现 HTTPS
-
获取数字证书
- 申请证书:
通过权威 CA(如 DigiCert、Let’s Encrypt)申请 SSL/TLS 证书。 - 配置域名和服务器:确保域名与服务器 IP 映射正确,方便证书申请验证。
- 申请证书:
-
配置服务器
- 在服务器(如 Apache、Nginx)启用 SSL/TLS 模块。
- 加载证书文件并指定私钥路径。
- 强制使用 TLS 1.2 或 TLS 1.3,并禁用旧的、不安全的协议版本(如 SSL、TLS 1.0 和 1.1)。
-
重定向 HTTP 到 HTTPS
- 配置 301 永久重定向规则,将所有 HTTP 请求跳转到 HTTPS。
-
测试 HTTPS
- 使用工具(如 SSL Labs)测试 HTTPS 配置,确保证书有效性和安全性。
5.6 HTTPS 的常见问题
-
证书无效:
可能因为证书过期、域名与证书不匹配或使用了不被信任的 CA 签发的证书。- 解决:检查证书有效性,使用可信 CA 签发的证书。
-
混合内容警告:
HTTPS 页面中加载了非 HTTPS 的资源(如图片、脚本)。- 解决:确保页面所有资源均通过 HTTPS 加载。
-
性能影响:
在高并发场景下,加密计算会增加服务器开销。- 解决:启用 HTTP/2 和 TLS 1.3,使用 CDN 缓解服务器压力。
其他
【计算机网络】计算机网络基础知识——万字详解!!!
【计算机网络】IPv4地址 & 子网掩码 & MAC地址 & 网关 & DNS解析
【计算机网络】本机DNS服务器与解析地址查看