HTTP使用指南 | 青训营笔记

60 阅读3分钟

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

一、本堂课重点内容:

  1. HTTP 协议的基本定义
  2. HTTP 协议主要特征
  3. HTTP 协议发展历程
  4. HTTP 协议的报文结构
  5. 场景分析 - 静态资源
  6. 场景分析 - 登录
  7. HTTP 协议实战 - 浏览器
  8. HTTP 协议实战 - Node篇
  9. 网络优化手段
  10. HTTP 协议拓展 - 通信方式

二、详细知识点介绍:

  1. HTTP 协议的基本定义
  • Hyper Text Transfer Protocol 超文本传输协议
  1. HTTP 协议主要特征
  • 应用层协议,基于TCP协议
  • 请求响应
  • 简单可拓展
  • 无状态
  1. HTTP 协议发展历程
  • HTTP/0.9 单行协议
    • 请求GET/mypage.html
    • 响应只有HTML文档
  • HTTP/1.0 构建可扩展性
    • 增加了Header
    • 有了状态码
    • 支持多种文档类型
  • HTTP/1.1 标准化协议
    • 链接复用
    • 缓存
    • 内容协商
  • HTTP/2 更优异的表现
    • 二进制协议
    • 压缩header
    • 服务器推送
  • HTTP/3 草案
  1. HTTP 协议的报文结构

这里说的是HTTP/1.1的报文结构

协议分析-报文.png

Method

Safe(安全的):不会修改服务器的数据的方法; GET HEAD OPTIONS

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

状态码

200 OK -客户端请求成果

301 -资源(网页等)被永久转移到其他URL

302 -临时跳转

401 Unauthorized -请求未经授权

404 -请求资源不存在,可能是输入了错误的URL

500 -服务器内部发生了不可预期的错误

504 Gateway Timeout -网关或者代理的服务器无法在规定的时间内获得想要的响应

HTTP状态码.png

HTTPRESTful_API.png

常用请求头

Accept:接收类型,表示浏览器支持的MIME类型

Content-Type:客户端发送出去实体内容的类型

Last-Modified:请求资源的最后修改时间

Expires:应该在什么时候认为文档已经过期,从而不再缓存它

ETag:资源的特定版本的标识符,Etags类似于指纹

Max-age:客户端的本地资源应该缓存多少秒,开启了Cache-Control后有效

Set-Cookie:设置和页面关联的cookie,服务器通过这个头部把cookie传给客户端

Server:服务器的一些相关信息

Access-Control-Allow-Origin:服务器端允许的请求Origin头部(譬如为*)

缓存

huancu.png

  1. 场景分析 - 静态资源

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

  • CDN:Content Delivery Network
  • 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务
  1. 场景分析 - 登录

denglu.png

  1. HTTP 协议实战

AJAX之XHR

  • XHR:XMLHttpRequest
  • readyState

AJAX之Fetch

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

标准库:HTTP/HTTPS

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

常用的请求库:axios

  • 支持浏览器、nodejs环境
  • 丰富的拦截器
  1. 网络优化手段

wangluo.png

  1. HTTP 协议拓展 - 通信方式

WebSocket

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

四、课后个人总结:

  • 老师上课十分详细,讲得也很通俗易懂,就是感觉有较多记忆性的东西
  • HTTP主要还是基于各种协议和一些标准库来进行数据传输