由于内容安全策略问题,Safari无法从blob创建工作进程
我正在尝试在我的网页上创建Worker:由于内容安全策略问题,Safari无法从blob创建工作进程,safari,blob,web-worker,content-security-policy,Safari,Blob,Web Worker,Content Security Policy,我正在尝试在我的网页上创建Worker: const url = URL.createObjectURL(blob); const worker = new Worker(url); Safari在控制台中显示以下错误: 拒绝加载blob:因为它既不出现在内容安全策略的子src指令中,也不出现在默认src指令中 我在页面上有以下内容安全策略标签: <meta http-equiv="Content-Security-Policy" content="work
const url = URL.createObjectURL(blob);
const worker = new Worker(url);
Safari在控制台中显示以下错误:
拒绝加载blob:因为它既不出现在内容安全策略的子src指令中,也不出现在默认src指令中
我在页面上有以下内容安全策略标签:
<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob:">
但看来Safari忽略了这一点。我打赌我尝试了所有可能的SCP指令组合(例如worker src、object src、script src、child src等)和sources(*、blob:、‘safe eval’、‘safe inline’等)
感谢你的任何想法
注释:
worker src
指令(测试了v12)并忽略它,请检查控制台中是否有无法识别的内容安全策略指令'worker src'
消息
工作者src
的回退链是:子src
->脚本src
->默认src
,因此要支持Safari,您必须使用与工作者src
相同的规则使用子src
。子src blob:
(按“blob:”按钮查看)
消息不清楚,因为它既不出现在内容安全策略的子src指令中,也不出现在默认src指令中。您是否已经有了策略中包含一些规则的子src
/默认src
因为Safari忽略了
,不应该阻止worker。事实上,我在控制台中有一条消息“Unrecognized Content Security Policy directive‘worker src’”,我以前没有对它给予足够的重视。是的,我在http响应头中设置了“默认src”(没有blob规则)。它应该解释我的问题的原因。当我将child src添加到meta标记时,没有任何更改。这应该是因为http响应头的优先级高于元标记规则。所以,我在响应头中添加了child src,它解决了我的问题