HTTP | 青训营笔记

57 阅读4分钟
  • 这是我参与「第四届青训营 」笔记创作活动的第7天

    以下为日常上课笔记,有关于HTTP的一些基础内容

  • 初识HTTP

    • 背景知识

    • 概念

      • 什么是HTTP

        • Hyper Text Transfer Protocol

        • 超文本传输协议

    • 特点

      • 应用层协议,基于TCP协议

      • 请求响应

      • 简单可扩展

      • 无状态

  • 协议分析

    • 报文解析

      • HTTP/1.1

      • Method

        • Safe(安全的)

          • 不会修改服务器的数据的方法

          • 有GET HEAD OPTIONS

        • ldempotent (幂等)

          • 同样的请求被执行一-次与连续执行多次的效果是一样的,服务器的状态也是一样的

          • 所有safe的方法都是Idempotent的

          • 有GET HEAD OPTIONS PUT DELETE

      • 状态码

      • RESTful API

        • 一种API设计风格

        • REST - Representational State Transfer

        • 特点

          • (1) 每一个URI代表一 种资源

          • (2) 客户端和服务器之间,传递这种资源的某种表现层

          • (3)客户端通过HTTP method, 对服务器端资源进行操作,实现"表现层状态转化"

        • 举例

      • 常用请求头

        • 举例

      • 常用响应头

        • 举例

      • 缓存

        • 分类

          • 强缓存

          • 协商缓存

        • 流程

      • cookie

        • Set-Cookie - response

    • 持续发展

      • 总体

      • HTTP/2

        • 特点

          • 更快、更稳定、更简单

          • 帧(frame) : HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。

          • 二进制

          • 消息:与逻辑请求或响应消息对应的完

          • 整的一系列帧

          • 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。

          • 交错发送,接收方重组织

          • HTTP/2连接都是永久的,而且仅需要每个来源一个连接

          • 流控制:阻止发送方向接收方发送大量数据的机制

          • 服务器推送

        • 对比

      • HTTPS

        • 概述

          • HTTPS : Hypertext Transfer Protocol Secure

          • 经过TSL/SSL加密

        • 补充

          • 对称加密:加密和解密都是使用同一个密钥

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

        • 流程

        • 对比

  • 常见场景

    • 场景分析

    • 静态资源

      • 方案:缓存+CDN+文件名hash

      • CDN : Content Delivery Network

      • 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务

    • 登陆

      • 业务场景

        • 表单登录

        • 扫码登录

          • 分析

          • 鉴权

          • SSO :单点登录Single Sign On

            • 流程

          • same-origin和cross-origin

            • 三处只要有不同则为cross-origin

            • 举例

          • 跨域

            • CORS ( Cross-Origin Resource Sharing )

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

            • 相关协议头

              • Access-Control-Allow-Origin

              • Access-Control-Expose-Headers

              • Access-Control-Max- Age

              • Access-Control-Allow-Credentials

              • Access-Control-Allow-Methods

              • Access-Control-Allow-Headers

              • Access-Control-Request-Method

              • Access-Control-Request-Headers

              • Origin

            • 流程

            • 跨域解决方案

              • CORS

              • 代理服务器

                • 同源策略是浏览器的安全策略,不是HTTP的

              • Iframe

                • 诸多不便

      • 技术方式

        • SSO
  • 实际应用

    • 浏览器

      • AJAX之XHR

        • XHR: XML HttpRequest

        • readyState

        • 简单实现

      • AJAX之Fetch

        • 特点

          • XMLHttpRequet的升级版

          • 使用Promise

          • 模块化设计,Response、Request、Header对 象

          • 通过数据流处理对象,支持分块读取

        • 简单实现

    • node

      • 标准库: HTTP/HTTPS

        • 特点

          • 默认模块,无需安装其他依赖

          • 功能有限/不是十分友好

        • 简单实现

      • 常用的请求库: axios

        • 特点

          • 支持浏览器、nodejs环境

          • 丰富的拦截器

        • 简单实现

    • 用户体验

      • 网络优化

        • 方案

      • 稳定性

        • 方案

        • 注意

          • 重试是保证稳定的有效手段,但要防止加剧恶劣情况

          • 缓存合理使用,作为最后一道防线

  • 了解更多

    • WebSocket

      • 特点

        • 浏览器与服务器进行全双工通讯的网络技术

        • 典型场景:实时性要求高,例如聊天室

        • URL使用Ws://或wss://等开头

      • 对比

    • QUIC

      • QUIC: Quick UDP Internet Connection

      • 特点

        • 0-RTT建联(首次建联除外)。

        • 类似TCP的可靠传输。

        • 类似TLS的加密传输,支持完美前向安全。

        • 用户空间的拥塞控制,最新的BBR算 法。

        • 支持h2的基于流的多路复用,但没有TCP的

        • HOL问题。

        • 前向纠错FEC。

        • 类似MPTCP的Connection migration。

      • 对比