查看 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-srcworker-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-srcworker-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 控制台会自动滚动

在 Chrome 开发者工具中查看 AJAX 响应内容?

Chrome 中的 JavaScript 断点设置和调试技巧

Chrome:如何使用Chrome的控制台查看Ajax的返回结果呢?求解