HTTP实用指南 | 青训营笔记

77 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第5天

01 初识

image-20220802154402581

  • 超文本传输协议
  • 应用层协议,基于TCP协议
  • 请求 响应
  • 简单可扩展
  • 无状态

02 协议分析

发展

image-20220802155229950

03 常见场景

状态码200 一定发起了请求吗?

  • (from …… cache)从本地缓存拿到,不一定经过网络链路

静态资源方案:缓存+CDN+文件名hash

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

怎么确保用户拿到的是最新的?

  • 改变文件名:版本号

为什么会有option请求?

  • 跨域,cross-origin

跨域解决方案

  • CORS
  • 代理服务器
    • 同源策略是浏览器的安全策略,不是HTTP的
  • Iframe
    • 诸多不便

image-20220802162112475

登录

  • Session + cookie
  • JWT ( JSON web token )

SSO:单点登录(Single Sign On)

04 实际应用

浏览器篇

AJAX之XHR

  • XHR:XMLHttpRequest
  • redayState

AJAX之Fetch

  • XMLHttpRequest的升级版
  • 使用Promise
  • 模块化设计,Response,Request,Header对象
  • 通过数据流处理对象,支持分块读取

node篇

标准库:HTTP/HTTPS

  • 默认模块,无需安装其他依赖
  • 功能有限/不是十分友好

常用的请求库:axios

  • 支持浏览器、nodejs环境
  • 丰富的拦截器

image-20220802163925200

image-20220802163946457

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

05 了解更多

通信方式

WebSocket

  • 浏览器与服务器进行全双工通讯的网络技术
  • 典型场景:实时性要求高,例如聊天室
  • URL 使用 ws://或 wss://等开头

QUIC:Quick UDP Internet Connection

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