查看 Chrome 控制台时,video.min.js 中出现“拒绝从 blob 创建工作者”错误
Posted
技术标签:
【中文标题】查看 Chrome 控制台时,video.min.js 中出现“拒绝从 blob 创建工作者”错误【英文标题】:Getting "Refused to create worker from blob" error in video.min.js when looking at Chrome console 【发布时间】:2019-07-08 18:28:09 【问题描述】:使用 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
谁能帮我弄清楚如何处理这个问题?
【问题讨论】:
我看到了同样的问题,但仅限于 Mac Chrome。 android 和 Win10 上的 Chrome 都可以,Mac Safari 可以,但是 Mac Chrome 给了我同样的错误。 这里也一样。仅在 Chrome 中获取此内容。希望有人有想法? 【参考方案1】:正如回溯所暗示的,该错误与Content Security Policy 有关。因此,如果 CSP 指令中存在 default-src
或 worker-src
,则每次尝试在 browser that supports CSP for workers 中生成 worker 都必须通过该指令或抛出错误。
关于blob worker有一个特别说明:
要为工作人员指定内容安全策略,请设置 请求的 Content-Security-Policy 响应标头 请求工作脚本本身。
如果工作脚本的来源是全局的,则例外情况是 唯一标识符(例如,如果其 URL 具有数据方案或 blob)。在这种情况下,worker 确实继承了内容安全性 创建它的文档或工作人员的政策。
来源:MDN: CSP in workers
所以创建 blob url 的页面(或 iframe)具有 CSP 指令:
"default-src * data: 'unsafe-eval' 'unsafe-inline'"
现在考虑以下:
如上所述,引用特定部分的特殊 URL 方案 独特的内容,例如 "data:"、"blob:" 和 "filesystem:" 是 从匹配 * 的政策中排除,并且必须明确列出。
来源:W3: Security Considerations for GUID URL schemes
这意味着您需要将blob:
数据架构显式添加到default-src
或worker-src
:
"default-src * data: 'unsafe-eval' 'unsafe-inline' blob:"
【讨论】:
不错的答案。值得指出的是,要删除 OP 的原始错误信息,只需要"worker-src blob:"
;但是,可能有其他错误需要*
、data:
和其他错误也包括在内。以上是关于查看 Chrome 控制台时,video.min.js 中出现“拒绝从 blob 创建工作者”错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 chrome 控制台中查看 $window.sessionStorage 的属性
带有 Set-Cookie Header 的 Safari/Chrome 的开发者控制台中不显示 Cookie,但在查看服务器日志时存在
当我单击一个对象时,Google Chrome 控制台会自动滚动