You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

video.js与内容安全策略(CSP)兼容问题求助

嘿,这两个问题都是 Video.js 和 CSP 规则兼容的常见坑,我来帮你逐个解决:

1. Blob Worker 被 CSP 拦截的问题

先说说这个 Worker 的来头:Video.js 会自动创建 Web Worker 来处理一些媒体相关的耗时任务,比如字幕解析、流媒体分片处理这类,这些 Worker 不是从你服务器的脚本文件加载的,而是用 blob: URL 动态生成的——这就是为什么你只加 worker-src 'self' 没用的原因,'self' 只覆盖你域名下的资源,不包含 blob: 协议的资源。

另外你之前写的 worker-src: 'self' 语法是错的!CSP 指令和值之间是空格,不是冒号,这也是配置无效的关键原因之一。

解决办法

把你的 CSP 里的 worker-src 规则改成:

worker-src 'self' blob:;

这样就允许从 blob: URL 创建 Worker 了,完全适配 Video.js 的需求。

2. Base64 字体被 CSP 拦截的问题

那个 data: 协议的 WOFF 字体是 Video.js 内置的图标字体——就是播放器控制栏里的播放、暂停、音量调节那些小图标,Video.js 把这些字体直接内嵌成 base64 编码写在 CSS 里了,所以走的是 data: 协议,而你当前的 font-src 规则没包含这个协议,所以被拦截了。

解决办法

在你的 font-src 规则里加上 data:,改成:

font-src 'self' fonts.gstatic.com maxcdn.bootstrapcdn.com data:;

这样就允许加载内嵌的 base64 字体了,控制栏的图标就能正常显示。

完整的 CSP 示例片段

把这两个修正后的规则合并到你现有的 CSP 里就行:

Content-Security-Policy: 
  worker-src 'self' blob:;
  font-src 'self' fonts.gstatic.com maxcdn.bootstrapcdn.com data:;
  # 这里加上你原本的其他 CSP 规则,比如 script-src、style-src 之类的

内容的提问来源于stack exchange,提问作者Pangit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 05:08:10