You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Edge中Blob引发HTTPS安全问题,Blob创建Web Worker失败如何解决?

解决Edge浏览器中Blob创建Web Worker的SEC7111错误

你提到的这段用Blob创建Web Worker的代码在Chrome和Firefox中正常运行,但在Edge里触发SEC7111安全错误,且Worker内的代码不执行,这个问题我之前帮人排查过,核心原因是Edge对Blob URL的生命周期管理和安全校验有特殊要求,下面是具体的修复方案:

关键修复点

  • 不要在创建Worker后立即调用URL.revokeObjectURL(workerUrl),必须等Worker确认加载完成或执行完毕后再撤销资源引用
  • 确保Blob内的脚本语法规范(虽然你的代码语法没问题,但规范写法能避免Edge的潜在解析问题)

修正后的代码示例

// 创建包含Worker脚本的Blob
const workerBlob = new Blob(["console.log('inside worker');"], { type: "text/javascript" });
const workerUrl = URL.createObjectURL(workerBlob);
const worker = new Worker(workerUrl);

// 监听Worker加载完成事件,确认脚本已加载后再撤销URL
worker.onload = function() {
  console.log('Worker加载完成');
  URL.revokeObjectURL(workerUrl);
};

// 监听Worker错误事件,出错时也记得清理资源
worker.onerror = function(error) {
  console.error('Worker执行出错:', error);
  URL.revokeObjectURL(workerUrl);
};

错误原因详解

Edge浏览器在HTTPS环境下对Blob URL的安全校验更严格,同时它的Worker加载机制对资源引用的生命周期要求更高:当你创建Worker后,浏览器需要短暂的时间去读取Blob中的脚本内容并完成加载,如果此时立刻撤销Blob URL,Worker会失去资源来源,直接触发SEC7111安全错误,同时脚本根本没机会执行。

通过在onload事件中延迟撤销URL,我们确保Worker已经成功获取并加载了Blob内的脚本,既解决了安全错误,也能让Worker代码正常运行。

内容的提问来源于stack exchange,提问作者Chris Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:53:53