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-src或worker-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:"被排除在匹配 * 策略之外,并且必须明确列出。
这意味着您需要blob:向default-srcor显式添加数据架构worker-src:
"default-src * data: 'unsafe-eval' 'unsafe-inline' blob:"
Run Code Online (Sandbox Code Playgroud)