【问题标题】:Getting "Refused to create worker from blob" error in video.min.js when looking at Chrome console查看 Chrome 控制台时,video.min.js 中出现“拒绝从 blob 创建工作者”错误
【发布时间】: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 中获取此内容。希望有人有想法?

标签: javascript video.js


【解决方案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: 和其他错误也包括在内。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
相关资源
最近更新 更多