HTTP实用指南 | 青训营笔记

86 阅读4分钟

HTTP实用指南 | 青训营笔记

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

初识HTTP

从输入链接到显示页面发生了

  1. 识别链接,时搜索内容还是链接

    • 如果是搜索内容,则拼接链接,打开指定的搜索引擎开始跳转
    • 如果是链接,识别并拼接成完整的链接开始跳转(加上http/https协议前缀)
  1. 浏览器内核发起请求,到达服务器处理请求并返回数据

  2. 浏览器收到相应根据响应头判断是否需要重定向

    • 需要则重新拼接链接重新跳转
  1. 获取到正确的响应后获取到文档,告知渲染进程准备开始渲染,渲染进程完成准备后告知主进程,渲染进程与网络进程搭建管道获取文档并开始渲染,(以上就是所谓的白屏时间)
  2. 加载页面完成

HTTP

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

协议分析

发展历程

HTTP0.9

  • 只需要传输超文本,请求只有GET,相应只有HTML文档

HTTP1.0

  • 增加header
  • 状态码
  • 支持多文档类型

HTTP1.1

  • keep-alive,链接复用
  • 缓存
  • 内容协商

HTTP2

  • 多路复用
  • 压缩header
  • 服务器推送

HTTP3(草案)

  • udp

报文

请求头

image.png

响应头

image.png

Method

  1. Options:允许服务器针对特定资源所支持的HTML请求方法,或web服务器发送测试服务器功能.允许客户端查看服务器性能.
  1. Get:向特定资源发送请求并返回实体主体;
  1. Post:提交数据
  1. Put:上传最新数据
  1. Head:与get请求类似,但是不会返回响应主体,用于获取报头信息
  1. Delete:请求服务器删除页面
  1. Trace:回显服务器收到的请求,用于测试和诊断
  1. Connect:HTTP1.1协议中能够将连接改为管道方式的代理服务器。
  2. Patch:用于对资源应用部分修改

状态码

  • 1XX:指示信息

  • 2XX:成功接受、理解、接受

    • 200:OK
  • 3XX:重定向

    • 301:资源永久转移
    • 302:资源临时转移
  • 4XX:客户端错误

    • 401:未授权
    • 404:不存在,可能是错误的URL
  • 5XX:服务端错误

    • 500:服务器内部不可描述错误
    • 504:网关或代理无法再规定时间内获得想要的响应

RESTful API

是一种API设计风格,要和响应头中的Method和状态码区分开

常用请求头

  • Accept:接受类型
  • Content-type:实体内容类型
  • Cache-Control:指定缓存机制
  • if-Modified-Since:对应服务端的Last-Modified,判断缓存是否过期
  • Expired:缓存控制
  • Max-age:缓存时间
  • if-None-Match:对应服务端ETag,匹配文件是否改动
  • Cookie:同域访问携带
  • Referer:页面来源URL
  • Origin:最初请求来源,更尊重隐私
  • User-Agent:客户端必要信息

常用响应头

  • Content-type:实体内容类型
  • Cache-Control:指定缓存机制
  • Last-Modified:对应服务端的if-Modified-Since,判断缓存是否过期
  • Expired:缓存控制
  • Max-age:缓存时间
  • ETag:对应服务端if-None-Match,匹配文件是否改动
  • Set-Cookie:设置页面关联Cookie,服务器通过cookie传给客户端
  • Server:服务器相关信息
  • Access-Control-Allow-Origin:服务端允许的请求Origin头部

缓存机制

  • 强缓存
  • 协商缓存

Cookie

  • key-value

发展

HTTP2

  • 数据帧
  • 消息
  • 数据流
  • 多路复用,长连接
  • 流控制
  • 服务器推送

HTTPS

  • TSL/SSL
  • 非对称加密+对称加密

场景分析

跨域

  • 预请求:获知服务端是否允许该请求

  • 相关协议头

  • 解决方案

    • CORS
    • 代理服务器
    • Iframe(诸多不便)

鉴权方案

  • session+cookie
  • JWT

单点登录(SSO)

实战

浏览器篇

  • XHR
  • Fetch

node篇

  • 标准库:HTTP/HTTPS
  • axios

用户体验

  • 网络优化
  • 稳定性
  • 安全

扩展

通信方式

  • WebSocket
  • QUIC(HTTP3)

总结

本篇是对HTTP一些基础知识的总结,虽说是基础知识但覆盖的知识面也比较全面了,但是因为比较基础,还有很多延伸的知识点,比如浏览器各个进程的工作方式和原理等知识还需要进一步学习