数据 URL Web Worker 丢失安全上下文

问题描述 投票:0回答:2

我正在使用本地 html 文件中的数据 URL 创建一个 Web Worker。该文件具有安全上下文,但工作人员没有。规格说明它们应该是相同的。我搞砸了,是规范错误还是铬浏览器错误?这是演示错误的代码。

<!DOCTYPE html><html><head><title>Worker Security Flaw?</title>
<meta charset="UTF-8"><script>
function main(){
  out.textContent= 'window.isSecureContext= '+isSecureContext;
  let worker= new Worker('data:text/javascript,onmessage= function(e){postMessage({flag:isSecureContext});};');
  worker.onmessage= function(e){out.textContent+= ', worker.isSecureContext= '+e.data.flag;};
  worker.postMessage({});
}
</script></head>
<body onload=main();><output id="out"></output></body></html>
javascript content-security-policy worker data-uri
2个回答
1
投票

有一种解决方法可以使用 blob。

let blb=new Blob(['onmessage=function(e){postMessage({flag:isSecureContext});};'], {type: 'text/javascript'});
let worker=new Worker(URL.createObjectURL(blb));

这是因为规范要求为工作人员提供与开启者相同的安全上下文。


© www.soinside.com 2019 - 2024. All rights reserved.