Skip to content

ADR-022: 认证仅用签名 URL

Status: Accepted Date: 2026-07-13

Context

播放器需要认证保护视频源,可选:

  • A: source.headers(HTTP header 认证)
  • B: source.getHeaders(动态 header)
  • C: 签名 URL
  • D: Cookie

Decision

v1.0 只支持签名 URL(方案 C),移除 headers / getHeaders。保留 source.onBeforeRequest 但明确 iOS Safari HLS 硬限制。

Rationale

  • MP4 + iOS Safari HLS 场景 headers 硬不生效(浏览器 API 不支持)
  • onBeforeRequest 也无法拦截 iOS Safari 原生 HLS
  • 签名 URL 是唯一跨平台可行方案
  • 建议签名 URL 有效期 6-12 小时(覆盖单次播放)
  • 后端配合会话跟踪(IP / UA 绑定 / 并发限制)

Consequences

:

  • 4 种接入方式 + 全平台一致
  • 后端可控 session 生命周期
  • iOS Safari 场景不再有"headers 时灵时不灵"问题

代价:

  • 无法在长会话中动态刷新认证
  • 需要后端配合签名 URL 生成 API

Alternatives Considered

  • 方案 A/B: iOS Safari 不生效,导致关键平台无法保护
  • 方案 D: Cookie 依赖同域 + 第三方 Cookie 限制越来越严