HTTP|青训营

60 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

目录

  • 什么是HTTP

  • 协议分析

    • 版本发展
    • 报文
  • 场景分析

    • 静态资源
    • 登录

详解

什么是HTTP?

image.png HTTP(Hyper Text Transfer Protocol)超文本传输协议

  • 是应用层的协议,使用TCP协议作为传输层协议
  • 请求比较简单,是语义请求
  • 是简单可扩展的协议
  • 无状态,每个请求之间是孤立的

协议分析

版本发展

  • 最初的0.9版本是为了解决通信的需求,单行协议,响应只有HTML文档,比较基础

  • 1.0增加了状态码和Header,支持多种文档类型

  • 1.1是使用最久的版本,可以实现链接复用、缓存、内容协商

  • 2是二进制协议,有压缩Header、服务器推送 image.png image.png

    • 更快、更稳定、更简单
    • 帧(frame)是http/2通信的最小单位,每个帧都包含有帧头,至少也会标识出当前帧所属的数据流,二进制编码形式传输消息,效率更高
    • 消息 与逻辑请求或响应消息对应的完整的一系列帧
    • 数据流 已建立的连接内的双向字节流,可以承载一条或多条信息
    • 连接都是永久的,只需要每个来源一个连接
    • 流控制:阻止发送方向接收方发送大量数据,这使得http2具有主动性
    • 服务器可以主动进行推送,但可能会导致服务器处理事件的效率降低
  • 3目前还是草案

  • *HTTPS

    • Hypertext Transfer Protocol Secure

    • 经过TSL/SSL加密

      • 对称加密:加密和解密都使用同一个密钥
      • 非对称加密:加密和解密需要使用两个不同的密钥:公钥:(public key)和私钥(private key)

报文

image.png

  • Method

  • 状态码

    • RESTful API 一种API设计风格

      • 每一个URI代表一种资源
      • 客户端和服务器之间,传递这种资源的某种表现层
      • 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
    • 常用请求头

    • 常用响应头

    • 缓存

      • 强缓存 可以直接用
      • 协商缓存 会有通信协商的过程

场景分析

静态资源

F12后选择network 状态码200,服务器并不一定接受请求 catch-control是强缓存相关的策略,Cache-control的单位是s 静态资源方案:缓存+CDN+文件名hash

  • CDN:Content Delivery Network
  • 通过用户就近性和服务器负载的判断,CDN确保内容以一种高效的方式为用户的请求提供服务 eg:会优先选择地理位置近的节点下载

登录

  • 表单登录(输入)

    • preserve log + 关键字:quick_login

    • OPTIONS 请求, 跨域时使用

      • 域由schme, host name, port三部分组成,任何一部分发生改变则需要跨域

      • https一般都是使用443端口号,http是80端口号,可省,省后不算跨域

      • 跨域

        • 预请求:获知服务器端是否允许该跨源请求(复杂请求)

        • 有很多与访问控制相关的协议头

        • 解决方案

          • CORS
          • 代理服务器:浏览器的安全策略,不是HTTP的,因为代理服务器和浏览器在同一个域,所以不需要跨域,只需要服务器与代理服务器跨域就可以了
          • Ifram,但是不方便
    • 鉴权方案

      • Session+cookie:用得比较多
      • JWT(JSON web token) :邮箱验证
      • SSO:单点登录(Single Sign On)
  • 扫码登录