M3U8 跨域(CORS)排障

浏览器播放 HLS 时,会分别请求 m3u8 清单和 ts/fmp4 分片。任意一个请求跨域未放行,都可能导致播放失败。

常见现象

控制台出现 CORS 报错,或 Network 面板中分片请求状态正常但被浏览器拦截。

排查要点

1) 清单地址和分片地址是否同源;2) 是否返回了跨域响应头;3) CDN 是否覆盖了源站头部。

Nginx 示例

location ~* \.(m3u8|ts)$ {
  add_header Access-Control-Allow-Origin * always;
  add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
  add_header Access-Control-Allow-Headers "*" always;
}