HTTP 协议|青训营笔记

62 阅读4分钟

这是我参加[第五届青训营]伴学笔记创作活动的第5天

本堂课堂知识

  • 了解HTTP 协议的基本定义、主要特征、发展历程和报文结构
  • 了解HTTP协议应用场景
  • 了解从浏览器和node实现发起协议,且网络优化手段

当输入一个网址后浏览器会发生什么 image.png

发展历程

1.1版本较为常用,目前使用最久,公认的标准版本
2.0版本着重传输过程更加稳定和更加快速 image.png

报文结构

以1.1版本为例 image.png

1.method方法

方法名说明
GET请求一个指定资源的表示形式.使用GET的请求应该只被用于获取数据
POST用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
PUT用请求有效载荷替换目标资源的所有当前表示
DELETE删除指定的资源
HEAD请求一个与GET请求的响应相同的响应,但没有响应体(不常见)
CONNECT建立一个到由目标资源标识的服务器的隧道。(不常见)
OPTIONS用于描述目标资源的通信选项。(不常见)
TRACE沿着到目标资源的路径执行一个消息环回测试。(不常见)
PATCH用于对资源应用部分修改

不常见是指在项目开发中,前后端关于请求方面不太使用,但是如果需要抓包就可能会碰到。
部分请求特点:
GET/HEAD/OPTIONS-安全safe(不会修改服务器数据的方法)
GET/HEAD/OPTIONS/PUT/DELETE-幂等Idempotent(同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的;所有safe的方法都是Idempotent的)

2.code状态码

image.png RUSTful API:一种API设计风格

  1. 每一个URI代表一种资源
  2. 客户端和服务器之间,传递这种资源的某种表现层
  3. 客户端通过HTTP method ,对服务器端资源进行操作,实现表现层状态转化"。
URIURL
含义统一资源标识符,比如DNA,户籍,身份证等标识人,那这些都是URI是通过网络路径地址标记资源的符号,
关系URI是URL的超集URL是URI的子集
组成标记资源的方式多种多样协议+//+域名+端口+路径+文件+?+参数+#+锚定

3.请求与响应

常见请求头 image.png 常见响应头 image.png

4.缓存(面经出现考题)

  • 强缓存-如果资源本地已存在直接使用 code200
    • Expires以时间戳形式倒计时
    • Cache -Control可缓存性
      • no-cache :协商缓存验证
      • no-store :不使用任何缓存
    • 缓存有效期 max-age:单位是,存储的最大周期从请求开始时间
    • 是否需要重新验证/重新加载 must-revalidate :一旦资源过期,在成功向原始服务器验证之前,不能使用。若没有设置这个属性,与服务器断开后允许下使用本地缓存。
  • 协商缓存-与server端协商缓存资源能否使用且特定版本,彼此通信验证 code304
    • Etag/If-None-Match :资源的特定版本的标识符,类似于指纹
    • Last-Modified /If-Modified -Since :最后修改时间

image.png

5.cookie

响应中set-cookie image.png

推荐

==>

  • Hypertext Transfer Protocol version 2 - RFC9113
  • HPACK - Header Compression for HTTP/2 - RFC7541

HTTP2能够更快更稳定的原因

以帧作为最小单位,二进制编码
消息:与逻辑请求或响应消息对应的完整的一系列帧。
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。 交错发送,接收方重组织 永久连接,且每个来源仅需一个连接 流控制:阻止发送方向接收方发送大量数据的机制(比如暂停视频不再接收接下来的数据流) 服务器推送

HTTPS 经过TSL/SSL加密 image.png

场景分析-以toutiao.com为例

静态资源方案 缓存+CDN(内容分发)+文件名hash(文件发生变化时而变化确保最新资源)
通过用户就近性和服务器负载均衡的判断,CDN确保内容以一种极为高效的方式为用户请求提供服务

跨域问题cross-origin导致options请求

www.example.com www.example.com:443

上面两个会被认定为同域,因为https默认是443端口号 image.png

跨域解决方法:CORS,代理服务器

鉴权方案 image.png

SSO:单点登录

浏览器中发协议

AJAX

XHR

image.png readyState通过0-4表示不同的请求阶段

Fetch

image.png

node中发协议

标准库:HTTP/HTTPS

image.png

常用请求库:axios

image.png

用户体验

网络优化

image.png 例如: image.png

稳定性

image.png

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

扩展-通信方式

WebSocet

全双工,实时要求高(eg.聊天室)
URL使用ws://或wss://开头

QUIC

image.png