查看 Chrome 控制台时在 video.min.js 中出现“拒绝从 blob 创建工作线程”错误

mck*_*mck 13 javascript video.js

使用 7.4.1,当我加载带有 videojs 的页面时,Chrome devtools 向我显示此错误:

Refused to create a worker from      
'blob:https://dev.culturediscovery.com/51e9879d-fa81-4044-9117-        
7328c0df4dd6' because it violates the following Content Security Policy directive: "default-src * data: 'unsafe-eval' 'unsafe-inline'". Note that 'worker-src' was not explicitly set, so 'default-src' is used as a fallback.
(anonymous) @   video.min.js:1830
(anonymous) @   video.min.js:2
(anonymous) @   video.min.js:2
Run Code Online (Sandbox Code Playgroud)

谁能帮我弄清楚如何处理这个问题?

big*_*ess 16

该错误与回溯建议的内容安全策略有关。因此,如果存在default-srcworker-src在 CSP 指令中,则每次尝试在支持 CSP 的浏览器中为工作人员生成工作人员都必须通过此指令或引发错误。

有一个关于 blob worker 的特别说明:

要为工作程序指定内容安全策略,请为请求工作程序脚本本身的请求设置 Content-Security-Policy 响应标头。

如果工作脚本的来源是全局唯一标识符(例如,如果其 URL 具有数据方案或blob),则例外情况 。在这种情况下,工作人员确实继承了创建它的文档或工作人员的内容安全策略

来源:MDN:工人中的 CSP

因此,创建 blob url 的页面(或 iframe)具有 CSP 指令:

"default-src * data: 'unsafe-eval' 'unsafe-inline'"
Run Code Online (Sandbox Code Playgroud)

现在考虑以下:

如上所述,引用特定内容的特殊 URL 方案,例如 "data:"、"blob:"和 "filesystem:"被排除在匹配 * 策略之外,并且必须明确列出

来源:W3:GUID URL 方案的安全注意事项

这意味着您需要blob:default-srcor显式添加数据架构worker-src

"default-src * data: 'unsafe-eval' 'unsafe-inline' blob:"
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案。值得指出的是,要删除OP的原始错误消息,只需要“worker-src blob:”;但是,可能存在其他错误,需要包含“*”、“data:”和其他错误。 (6认同)