http和https的了解
一、HTTP 核心解析HTTPHyperText Transfer Protocol超文本传输协议是客户端与服务器之间传输数据的应用层协议是 Web 通信的基础。1. HTTP 的核心特点特点说明优势 / 问题无状态服务器不记录客户端的请求上下文请求之间无关联优势轻量、高效问题需 Cookie/Session 等机制实现状态保持无连接HTTP/1.1 前每次请求新建 TCP 连接1.1 引入持久连接Keep-Alive优势简化设计问题早期频繁建连消耗资源1.1 已优化明文传输所有请求 / 响应数据均为纯文本无加密处理优势易调试问题存在窃听、篡改风险核心安全短板灵活扩展支持自定义请求头 / 响应头、请求方法GET/POST/PUT 等优势适配 RESTful API、文件上传等多场景基于请求 - 响应模型客户端发起请求 → 服务器返回响应单向交互优势逻辑简单问题无法主动推送需 WebSocket 补充缓存友好支持多缓存策略通过头字段控制缓存行为优势减少请求次数、降低服务器负载、提升访问速度问题配置不当易导致数据不一致2. HTTP 缓存核心机制HTTP 缓存是客户端浏览器或中间代理服务器临时存储服务器返回的资源后续请求相同资源时优先读取本地缓存的机制。1缓存分类按存储位置与优先级缓存类型存储位置优先级核心特点强缓存浏览器本地磁盘 / 内存最高直接读取本地缓存不向服务器发送请求协商缓存浏览器本地磁盘 / 内存次高向服务器发送请求由服务器判断缓存是否有效代理缓存CDN、Nginx 等中间代理服务器中等为多个客户端提供缓存服务降低源站压力数据库缓存服务器端数据库低属于服务器内部优化非 HTTP 层面缓存2强缓存核心控制头字段强缓存是浏览器优先使用的本地缓存策略服务器通过Cache-Control主流或Expires头字段给资源设定有效期。有效期内浏览器请求相同资源时直接从本地读取无需和服务器通信既省流量又提速度。但弊端是若服务器资源更新浏览器因未请求会继续使用旧缓存适用于长期不变的静态资源如图片、CSS。头字段类型格式 / 指令作用说明Expires响应头HTTP/1.0绝对时间GMT 格式例Expires: Wed, 21 Oct 2026 07:28:00 GMT浏览器对比本地时间与该时间未过期则用缓存依赖本地时间易受时间篡改影响Cache-Control响应头HTTP/1.1推荐多指令组合例Cache-Control: public, max-age3600用相对时间控制缓存指令优先级高于Expires-max-ageNCache-Control子指令N 为秒数缓存有效期为响应返回后 N 秒-publicCache-Control子指令-允许浏览器、代理服务器等所有节点缓存-privateCache-Control子指令-仅允许浏览器缓存禁止代理服务器缓存如用户个人数据-no-cacheCache-Control子指令-不使用强缓存直接进入协商缓存流程-no-storeCache-Control子指令-禁止任何缓存每次请求都从服务器获取新资源如敏感数据3协商缓存核心控制头字段协商缓存是强缓存过期后的备选方案浏览器会携带资源标识ETag或Last-Modified请求服务器。服务器对比标识若资源未更新返回304状态码浏览器继续用本地缓存若已更新返回新资源和新标识。它兼顾性能与资源时效性ETag基于内容哈希比基于修改时间的Last-Modified精度更高适合频繁更新的动态资源如 HTML。头字段组头字段类型作用说明交互流程Last-ModifiedIf-Modified-SinceLast-Modified响应头If-Modified-Since请求头基于文件最后修改时间判断缓存有效性时间精度为秒级1. 服务器返回资源时通过Last-Modified携带最后修改时间2. 强缓存过期后浏览器通过If-Modified-Since携带该时间请求服务器3. 服务器对比未修改则返回304 Not Modified已修改则返回200 OK 新资源ETagIf-None-MatchETag响应头If-None-Match请求头基于文件内容哈希值判断缓存有效性内容变则哈希值变精度更高1. 服务器返回资源时通过ETag携带资源唯一哈希值2. 强缓存过期后浏览器通过If-None-Match携带该哈希值请求服务器3. 服务器对比哈希一致则返回304 Not Modified不一致则返回200 OK 新资源4缓存完整执行流程浏览器请求资源 → 检查本地是否有缓存无缓存 → 发送请求到服务器 → 返回200 OK 资源 缓存头 → 存储缓存有缓存 → 检查强缓存是否过期未过期 → 直接使用本地缓存状态码200 from cache已过期 → 发送协商缓存请求到服务器服务器判断缓存有效 → 返回304 Not Modified→ 使用本地缓存服务器判断缓存无效 → 返回200 OK 新资源 新缓存头 → 更新缓存5缓存实战配置建议资源类型缓存配置方案配置目的静态资源CSS/JS/ 图片Cache-Control: public, max-age6048007 天 文件指纹如app.v2.js长期缓存降低请求次数文件更新时修改指纹触发新请求动态页面HTMLCache-Control: no-cache强制走协商缓存保证页面实时性敏感数据用户订单 / 支付信息Cache-Control: no-store禁止任何缓存每次请求都获取最新数据3. HTTP 角色认证实现机制HTTP 无状态需通过请求头 / 响应头传递认证信息实现服务器对用户身份的识别。认证机制核心逻辑头字段示例特点Cookie Session服务器生成唯一 Session ID通过响应头发给客户端客户端后续请求通过请求头携带该 ID响应头Set-Cookie: JSESSIONIDabc123; Path/; HttpOnly; Max-Age3600请求头Cookie: JSESSIONIDabc123Session 存储在服务器易受 CSRF 攻击需配置HttpOnly防止 XSS 窃取 CookieToken 认证JWT 为主服务器验证身份后生成加密 Token返回给客户端客户端请求时通过请求头携带 Token请求头Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Token 存储在客户端服务器无需存储适合分布式系统Token 泄露会导致身份冒用需配合 HTTPSBasic 认证客户端将用户名和密码用 Base64 编码后通过请求头传递请求头Authorization: Basic dXNlcjE6cGFzc3dvcmQ明文编码无加密仅适用于测试 / 内网场景OAuth2.0第三方授权机制通过授权码获取 Token实现跨平台登录如微信 / QQ 登录请求头Authorization: Bearer [第三方授权 Token]无需用户提供账号密码安全性高流程较复杂4. HTTP 请求头 / 响应头核心分类头字段分类核心头字段作用身份认证Authorization、Cookie、Set-Cookie传递认证信息实现用户身份识别缓存控制Cache-Control、Expires、ETag、Last-Modified、If-None-Match、If-Modified-Since控制缓存策略优化资源加载性能内容协商Content-Type、AcceptContent-Type声明响应体格式Accept声明客户端支持的格式跨域控制Access-Control-Allow-Origin解决跨域请求问题如*允许所有域名访问连接控制Connection控制持久连接如Connection: Keep-Alive安全防护X-Content-Type-Options、X-XSS-Protection基础安全防护无法解决明文传输问题5. HTTP 核心缺陷引出 HTTPSHTTP 明文传输的特性导致三大致命问题窃听风险中间人可抓取数据包获取账号密码、支付信息等敏感数据篡改风险中间人可修改请求 / 响应内容如篡改订单金额、植入恶意代码冒充风险中间人可伪装成服务器钓鱼网站骗取用户数据。二、HTTPS 核心解析HTTPS 不是新协议是HTTP 运行在 SSL/TLS 加密层之上的安全协议核心目标是解决 HTTP 的安全缺陷。1. HTTPS 核心改进改进点说明加密传输数据通过 SSL/TLS 加密后再传输中间人无法解析明文身份验证服务器需部署 CA 签发的证书客户端可验证服务器合法性防止冒充完整性校验通过哈希算法校验数据确保传输过程中未被篡改缓存兼容缓存逻辑与 HTTP 一致缓存资源加密存储更安全2. HTTPS 连接建立过程TCP 三次握手 TLS 握手阶段具体步骤作用阶段 1TCP 三次握手1. 客户端发送 SYN 报文 → 服务器2. 服务器返回 SYNACK 报文 → 客户端3. 客户端发送 ACK 报文 → 服务器建立客户端与服务器的可靠 TCP 连接阶段 2TLS 握手核心1.Client Hello客户端发送支持的 TLS 版本、加密套件、随机数 1协商加密规则生成密钥的基础数据2.Server Hello服务器返回选定的 TLS 版本、加密套件、随机数 2确认加密规则补充密钥基础数据3.服务器发证书服务器发送 CA 签发的证书含公钥、CA 签名客户端验证服务器合法身份4.Server Hello Done服务器告知客户端 Hello 阶段结束进入密钥协商阶段5.客户端验证证书客户端向 CA 验证证书合法性失败则终止连接防止连接到钓鱼网站6.客户端发预主密钥客户端生成预主密钥用服务器公钥加密后发送服务器用私钥解密双方获取预主密钥7.生成会话密钥双方通过「随机数 1 随机数 2 预主密钥」计算出会话密钥对称加密密钥对称加密效率高用于后续数据传输8.加密握手完成客户端和服务器分别用会话密钥加密「握手完成」报文并发送确认加密通信可用阶段 3加密数据传输后续所有 HTTP 请求 / 响应数据均通过会话密钥加密后传输保证数据安全防止窃听、篡改3. HTTP 与 HTTPS 核心区别对比维度HTTPHTTPS默认端口80443传输方式明文传输无加密SSL/TLS 加密传输安全性无身份验证、无完整性校验存在窃听 / 篡改 / 冒充风险加密传输、服务器身份验证、数据完整性校验性能无加解密开销速度快证书验证、加解密存在少量性能开销可优化证书要求无需证书需 CA 签发的证书免费 / 付费缓存机制缓存资源易被篡改缓存资源加密存储更安全HTTPHyperText Transfer Protocol超文本传输协议是客户端与服务器之间传输数据的应用层协议是 Web 通信的基础。1. HTTP 的核心特点特点说明优势 / 问题无状态服务器不记录客户端的请求上下文请求之间无关联优势轻量、高效问题需 Cookie/Session 等机制实现状态保持无连接HTTP/1.1 前每次请求新建 TCP 连接1.1 引入持久连接Keep-Alive优势简化设计问题早期频繁建连消耗资源1.1 已优化明文传输所有请求 / 响应数据均为纯文本无加密处理优势易调试问题存在窃听、篡改风险核心安全短板灵活扩展支持自定义请求头 / 响应头、请求方法GET/POST/PUT 等优势适配 RESTful API、文件上传等多场景基于请求 - 响应模型客户端发起请求 → 服务器返回响应单向交互优势逻辑简单问题无法主动推送需 WebSocket 补充缓存友好支持多缓存策略通过头字段控制缓存行为优势减少请求次数、降低服务器负载、提升访问速度问题配置不当易导致数据不一致2. HTTP 缓存核心机制HTTP 缓存是客户端浏览器或中间代理服务器临时存储服务器返回的资源后续请求相同资源时优先读取本地缓存的机制。1缓存分类按存储位置与优先级缓存类型存储位置优先级核心特点强缓存浏览器本地磁盘 / 内存最高直接读取本地缓存不向服务器发送请求协商缓存浏览器本地磁盘 / 内存次高向服务器发送请求由服务器判断缓存是否有效代理缓存CDN、Nginx 等中间代理服务器中等为多个客户端提供缓存服务降低源站压力数据库缓存服务器端数据库低属于服务器内部优化非 HTTP 层面缓存2强缓存核心控制头字段强缓存是浏览器优先使用的本地缓存策略服务器通过Cache-Control主流或Expires头字段给资源设定有效期。有效期内浏览器请求相同资源时直接从本地读取无需和服务器通信既省流量又提速度。但弊端是若服务器资源更新浏览器因未请求会继续使用旧缓存适用于长期不变的静态资源如图片、CSS。头字段类型格式 / 指令作用说明Expires响应头HTTP/1.0绝对时间GMT 格式例Expires: Wed, 21 Oct 2026 07:28:00 GMT浏览器对比本地时间与该时间未过期则用缓存依赖本地时间易受时间篡改影响Cache-Control响应头HTTP/1.1推荐多指令组合例Cache-Control: public, max-age3600用相对时间控制缓存指令优先级高于Expires-max-ageNCache-Control子指令N 为秒数缓存有效期为响应返回后 N 秒-publicCache-Control子指令-允许浏览器、代理服务器等所有节点缓存-privateCache-Control子指令-仅允许浏览器缓存禁止代理服务器缓存如用户个人数据-no-cacheCache-Control子指令-不使用强缓存直接进入协商缓存流程-no-storeCache-Control子指令-禁止任何缓存每次请求都从服务器获取新资源如敏感数据3协商缓存核心控制头字段协商缓存是强缓存过期后的备选方案浏览器会携带资源标识ETag或Last-Modified请求服务器。服务器对比标识若资源未更新返回304状态码浏览器继续用本地缓存若已更新返回新资源和新标识。它兼顾性能与资源时效性ETag基于内容哈希比基于修改时间的Last-Modified精度更高适合频繁更新的动态资源如 HTML。头字段组头字段类型作用说明交互流程Last-ModifiedIf-Modified-SinceLast-Modified响应头If-Modified-Since请求头基于文件最后修改时间判断缓存有效性时间精度为秒级1. 服务器返回资源时通过Last-Modified携带最后修改时间2. 强缓存过期后浏览器通过If-Modified-Since携带该时间请求服务器3. 服务器对比未修改则返回304 Not Modified已修改则返回200 OK 新资源ETagIf-None-MatchETag响应头If-None-Match请求头基于文件内容哈希值判断缓存有效性内容变则哈希值变精度更高1. 服务器返回资源时通过ETag携带资源唯一哈希值2. 强缓存过期后浏览器通过If-None-Match携带该哈希值请求服务器3. 服务器对比哈希一致则返回304 Not Modified不一致则返回200 OK 新资源4缓存完整执行流程浏览器请求资源 → 检查本地是否有缓存无缓存 → 发送请求到服务器 → 返回200 OK 资源 缓存头 → 存储缓存有缓存 → 检查强缓存是否过期未过期 → 直接使用本地缓存状态码200 from cache已过期 → 发送协商缓存请求到服务器服务器判断缓存有效 → 返回304 Not Modified→ 使用本地缓存服务器判断缓存无效 → 返回200 OK 新资源 新缓存头 → 更新缓存5缓存实战配置建议资源类型缓存配置方案配置目的静态资源CSS/JS/ 图片Cache-Control: public, max-age6048007 天 文件指纹如app.v2.js长期缓存降低请求次数文件更新时修改指纹触发新请求动态页面HTMLCache-Control: no-cache强制走协商缓存保证页面实时性敏感数据用户订单 / 支付信息Cache-Control: no-store禁止任何缓存每次请求都获取最新数据3. HTTP 角色认证实现机制HTTP 无状态需通过请求头 / 响应头传递认证信息实现服务器对用户身份的识别。认证机制核心逻辑头字段示例特点Cookie Session服务器生成唯一 Session ID通过响应头发给客户端客户端后续请求通过请求头携带该 ID响应头Set-Cookie: JSESSIONIDabc123; Path/; HttpOnly; Max-Age3600请求头Cookie: JSESSIONIDabc123Session 存储在服务器易受 CSRF 攻击需配置HttpOnly防止 XSS 窃取 CookieToken 认证JWT 为主服务器验证身份后生成加密 Token返回给客户端客户端请求时通过请求头携带 Token请求头Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Token 存储在客户端服务器无需存储适合分布式系统Token 泄露会导致身份冒用需配合 HTTPSBasic 认证客户端将用户名和密码用 Base64 编码后通过请求头传递请求头Authorization: Basic dXNlcjE6cGFzc3dvcmQ明文编码无加密仅适用于测试 / 内网场景OAuth2.0第三方授权机制通过授权码获取 Token实现跨平台登录如微信 / QQ 登录请求头Authorization: Bearer [第三方授权 Token]无需用户提供账号密码安全性高流程较复杂4. HTTP 请求头 / 响应头核心分类头字段分类核心头字段作用身份认证Authorization、Cookie、Set-Cookie传递认证信息实现用户身份识别缓存控制Cache-Control、Expires、ETag、Last-Modified、If-None-Match、If-Modified-Since控制缓存策略优化资源加载性能内容协商Content-Type、AcceptContent-Type声明响应体格式Accept声明客户端支持的格式跨域控制Access-Control-Allow-Origin解决跨域请求问题如*允许所有域名访问连接控制Connection控制持久连接如Connection: Keep-Alive安全防护X-Content-Type-Options、X-XSS-Protection基础安全防护无法解决明文传输问题5. HTTP 核心缺陷引出 HTTPSHTTP 明文传输的特性导致三大致命问题窃听风险中间人可抓取数据包获取账号密码、支付信息等敏感数据篡改风险中间人可修改请求 / 响应内容如篡改订单金额、植入恶意代码冒充风险中间人可伪装成服务器钓鱼网站骗取用户数据。二、HTTPS 核心解析HTTPS 不是新协议是HTTP 运行在 SSL/TLS 加密层之上的安全协议核心目标是解决 HTTP 的安全缺陷。1. HTTPS 核心改进改进点说明加密传输数据通过 SSL/TLS 加密后再传输中间人无法解析明文身份验证服务器需部署 CA 签发的证书客户端可验证服务器合法性防止冒充完整性校验通过哈希算法校验数据确保传输过程中未被篡改缓存兼容缓存逻辑与 HTTP 一致缓存资源加密存储更安全2. HTTPS 连接建立过程TCP 三次握手 TLS 握手阶段具体步骤作用阶段 1TCP 三次握手1. 客户端发送 SYN 报文 → 服务器2. 服务器返回 SYNACK 报文 → 客户端3. 客户端发送 ACK 报文 → 服务器建立客户端与服务器的可靠 TCP 连接阶段 2TLS 握手核心1.Client Hello客户端发送支持的 TLS 版本、加密套件、随机数 1协商加密规则生成密钥的基础数据2.Server Hello服务器返回选定的 TLS 版本、加密套件、随机数 2确认加密规则补充密钥基础数据3.服务器发证书服务器发送 CA 签发的证书含公钥、CA 签名客户端验证服务器合法身份4.Server Hello Done服务器告知客户端 Hello 阶段结束进入密钥协商阶段5.客户端验证证书客户端向 CA 验证证书合法性失败则终止连接防止连接到钓鱼网站6.客户端发预主密钥客户端生成预主密钥用服务器公钥加密后发送服务器用私钥解密双方获取预主密钥7.生成会话密钥双方通过「随机数 1 随机数 2 预主密钥」计算出会话密钥对称加密密钥对称加密效率高用于后续数据传输8.加密握手完成客户端和服务器分别用会话密钥加密「握手完成」报文并发送确认加密通信可用阶段 3加密数据传输后续所有 HTTP 请求 / 响应数据均通过会话密钥加密后传输保证数据安全防止窃听、篡改3. HTTP 与 HTTPS 核心区别对比维度HTTPHTTPS默认端口80443传输方式明文传输无加密SSL/TLS 加密传输安全性无身份验证、无完整性校验存在窃听 / 篡改 / 冒充风险加密传输、服务器身份验证、数据完整性校验性能无加解密开销速度快证书验证、加解密存在少量性能开销可优化证书要求无需证书需 CA 签发的证书免费 / 付费缓存机制缓存资源易被篡改缓存资源加密存储更安全
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2435313.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!