HTTP实用指南 | 青训营笔记

43 阅读3分钟

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

初识HTTP

OSI七层模型

image.png

HTTP:超文本传输协议,应用层协议,TCP协议作为其传输层协议。简单可扩展,无状态连接

协议发展历程

image.png

协议分析

HTTP/1.1

HTTP/1.1的请求/响应报文 image.png

Method

image.png

根据方法的特点,有如下分类

  • Safe:不会修改服务器数据,GET HEAD OPTIONS
  • Idempotent幂等:同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是Idempotent的,GET HEAD OPTIONS PUT DELETE

状态码 StatusCode

1xx: 指示信息,表示请求已接收,继续处理

2xx: 成功,表示请求已被成功接收、理解、接受

  • 200 OK 客户端请求成功

3xx: 重定向,要完成请求必须进行更进一步的操作

  • 301 资源(网页等)被永久转移到其他URL
  • 302 临时跳转

4xx: 客户端错误,请求有语法错误或请求无法实现

  • 401 unauthorized 请求未经授权
  • 404 请求资源不存在,可能是输入了错误的URL

5xx: 服务器端错误,服务器未能实现合法的请求

  • 500 服务器内部发生了不可预期的错误
  • 504 Gateway Timeout 网关或者代理服务器无法在规定时间获得想要的响应

补充:RESTful API,一种API设计风格,借助HTTP method实现表意

常用请求头

image.png

常用响应头

image.png

缓存

强缓存:直接就可以用的缓存

协商缓存:还要和服务器端通信确认可不可以用

image.png image.png 大致流程如下: image.png

Cookie

响应头中的Set-Cookie

image.png

HTTP/2

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

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

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

特性

  • 永久性:HTTP/2连接都是永久的,而且仅需要每个来源一个连接
  • 流控制:阻止发送方向接收方发送大量数据的机制,eg视频播放暂停
  • 服务器推送

HTTPS

在HTTP基础上增加了TSL/SSL加密过程,提高安全性

image.png

常见场景

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

CDN:通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务 文件名hash:在每次文件变化时更新文件名,确保拿到最新的文件

登录

跨域问题及解决方案

image.png

CORS: Cross-Origin Resource Sharing

预请求:获知服务器是否允许该跨域请求(复杂请求)

image.png image.png

代理服务器

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

Iframe【诸多不便】

登陆鉴权

  • Session + Cookie

    image.png
  • JWT(JSON web token)

    image.png

SSO 单点登录

单点登录:用户只需登录一次,即可通过单点登录系统(eTrueSSO)访问后台的多个应用系统,二次登陆时无需重新输入用户名和密码。 image.png

实际应用

浏览器中

  • XHR:XMLHttpRequest
  • Fetch:XHR的升级版,使用Promise

node中

  • 标准库:HTTP/HTTPS(功能有限)

常用的请求库

  • axios(丰富的拦截器)

网络优化及稳定性

image.png image.png

Chrome开发者工具中Network部分的具体使用

More

WebSocket

  • 浏览器与服务器进行全双工通讯的网络技术
  • URL使用ws:// 或 wss:// 开头

QUIC

Quick UDP Internet Connection

image.png