HTTP实用指南 | 青训营笔记

59 阅读3分钟

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

初识HTTP

Hyper Text Transfer Protocol超文本传输协议

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

  • 请求 响应

  • 简单可扩展

  • 无状态

协议分析

发展

发展.JPG

报文

报文.JPG

  1. 特性:
  • safe(安全的):不会修改服务器的数据的方法。GET、HEAD、OPTIONS

  • idempotent(幂等)同样的请求被执行一次与连续执行多次的效果是一样的,服务器状态也是一样的。所有safe的方法都是idempotent的。GET、HEAD、OPTIONS、PUT、DELETE

  1. 状态码:用三位表示

状态.JPG

  1. RESTful API
  • 一种API设计风格(REST - Representational State Transfer)

  • 每一个URL代表一种资源;

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

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

api.JPG

  1. 常用请求头

请求.JPG

  1. 常用响应头

响应.JPG

  1. 缓存
  • 强缓存

强缓存.JPG

  • 协商缓存

协商.JPG

缓存.JPG

  1. cookie

coo.JPG

HTTP/2

  • 概述:更快、更稳定、更简单

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

  • 消息:与逻辑请求或响应消息对应的完整的一系列帧。

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

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

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

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

HTTPS(Hypertext Transfer Protocol Secure)

在HTTP的基础上经过TSL/SSL加密

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

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

常见场景

打开浏览器 ->打开控制台(右键-检查;或者F12)->切换到network

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

  • CDN:Content Delivery Nrtwork

    • 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务
  1. 登录
  • 业务场景(表单登录、扫码登录)

    • 跨域

    跨域.JPG

    • 跨域解决方案
      • CORS
      • 代理服务器
      • 同源策略是浏览器的安全策略,不是HTTP的、诸多不便
  • 技术方式

    SSO(Single Sign On):单点登录

实际应用

  1. 浏览器篇
  • AJAX之XHR

    a.JPG

  • AJAX之Fetch

    • XMLHttpRequet的升级版

    • 使用Promise

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

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

  1. node篇
  • 标准库:HTTP/HTTPS

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

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

  1. 用户体验
  • 网络优化

    • CDN是否开启H2的性能对比

    • 预解析、预连接

  • 稳定性

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

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

    稳定.JPG

了解更多

  1. 通信方式

    WebSocker

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

  • 典型场景:实时性要求高

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

  1. QUIC:Quick UDP Internet Connection

q.JPG