HTTP指南

本文详细介绍了HTTP协议的基础概念和发展历程,包括其特点、工作流程及安全性的提升方式。深入探讨了Method类型、状态码、RESTful API等内容,并讲解了Cookie的工作原理及其应用场景。此外,还对比了HTTP/2的新特性,并简述了HTTPS的加密机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP 初识

  • HTTP 协议:Hyper Text Transfer Prototcal,超文本传输协议,在计算机网络中属于应用层协议,基于传输层的 TCP 协议。特点有基于请求返回响应、简单可扩展、无状态。
    image.png

  • HTTP 协议工作流程
    image.png

HTTP 协议分析

  • HTTP 协议的发展
    image.png

  • HTTP 报文分析

    • Method

      • 安全的(safe)Method:不会修改服务器的数据的方法:GET、HEAD、OPTIONS
      • 幂等的(idempotent)Method:同样的请求被执行一次与连续执行多次效果是一样的,服务器的状态也是一样的,所有 safe 的方法都是 idempotent 的:GET、HEAD、OPTIONS、DELETE
        image.png
    • 状态码
      image.png

    • RESTful API
      image.png

    • 常用请求头
      image.png

    • 常用响应头
      image.png

    • 缓存
      image.png

    • 缓存使用过程
      image.png

    • Cookie

      • Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能
      • Cookie 主要用于以下三个方面:
        • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
        • 个性化设置(如用户自定义设置、主题等)
        • 浏览器行为跟踪(如跟踪分析用户行为等)
          image.png
  • HTTP/2

    • 更快、更稳定、更简单
    • 帧是 HTTP/2 通信的最小单位,每个帧都包含帧头,也会标识出当前帧所属的数据流
    • 二进制编码(HTTP1.x 的解析是基于文本的)
    • header 压缩,HTTP/2使用 encoder 来减少需要传输的header大小,通讯双方各自 cache 一份 header fields 表,既避免了重复header的传输,又减小了需要传输的大小
    • 交错发送,接收方重组织
    • 消息:与逻辑请求或响应消息对应的完整的一系列帧
    • 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
    • HTTP/2 连接都是永久的,而且仅需要每个来源一个连接
    • 流控制:阻止发送方向接收方发送大量数据的机制
  • HTTPS:Hypertext Transfer Protocol Secure

    • 经过 TSL/SSL 加密
    • 对称加密:加密和解密都是使用同一个密钥;非对称加密:加密和解密需要使用公钥和私钥两个不同的密钥
    • HTTPS 协议使用对称加密和非对称加密混用的加密方法
      image.png

HTTP 常见场景

  • 静态资源

    • 静态资源解决方案:缓存 + CDN + 文件名hash
    • CDN(Content Delivery Network):通过用户就近性和服务器负载的判断,CDN 确保内容以一种极为高效的方式为用户的请求提供服务
    • 文件名hash 为了防止因缓存而出现的静态资源不更新的问题
  • 跨域解决方案

    • CORS
      image.png
    • 代理服务器
      • 同源策略是浏览器的安全策略,不是 HTTP 协议的
        image.png
    • Iframe 通信,问题较多,很少使用
  • 常见场景:网站登录后,下次进入网站怎么记录得到用户状态信息

    • Session + Cookie (鉴权)
      image.png
    • JWT(JSON web token)
      image.png
  • 常见场景:子应用如何做到自动登录(不同的网站,例如头条官网跳转到头条号网站,用户自动登录)

    • SSO(Single Sign On,单点登录)
      image.png

HTTP 实际应用

  • 浏览器 AJAX 之 XHR(XMLHttpRequest)
    image.png
    image.png

  • 浏览器 AJAX 之 Fetch

    • XMLHttpRequest 的升级版
    • 使用 Promise
    • 模块化设计,Response,Request,Header 对象
    • 通过数据流处理对象,支持分块读取
      image.png
  • Node 标准库之 HTTP、HTTPS

    • 默认模块,无需安装其他依赖
    • 功能有限/不是十分友好
  • 常用请求库之 axios

    • 支持浏览器、node 环境
    • 内置 Promise,有丰富的拦截器
      image.png
  • 网络优化

    • image.png
    • 预解析、预连接
    <link rel="dns-prefetch" href="//xxx.com">
    <link rel="preconnect" href="//cdn.xxx.com" crossorigin>
    
  • 稳定性

    • image.png
    • 重试是保证稳定的有效手段,但要防止加剧恶劣情况
    • 缓存合理使用,作为最后一道防线
  • HTTP 扩展

    • WebSocket

      • 浏览器与服务器进行全双工通讯的网络技术
      • 典型场景:实时性要求高例如聊天室,游戏等
      • URL 使用 ws:// 或 wss:// 等开头
        image.png
    • QUIC:Quik UDP Internet Connection 基于 UDP,应用暂不多

      • 0-RTT 建联(首次建联除外)
      • 类似 TCP 的可靠传输
      • 类似 TLS 的加密传输,支持完美前向安全
      • 用户空间的拥塞控制,最新的 BBR 算法
      • 支持 h2 的基于流的多路复用,但没有 TCP 的 HOL 问题
      • 前向纠错 FEC
      • 类似 MPTCP 的 Connection migration
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值