我无法让new Function
在Web Worker中工作。我有一个HTML页面,它产生了一个Web Worker。此Web Worker通过new Function(str)
执行代码。我正在尝试在打包的Chrome应用中使用此功能,该应用需要使用eval
的页面 - 类似的代码将明确列为清单中的沙盒页面。
现在,有两种选择:
new Function
,但我无法生成Web Worker,因为我无法发出任何请求(沙盒页面具有唯一的来源)。 new Worker(...)
会抛出SECURITY_ERR
。
new Function
适用于沙箱new Worker
因沙箱而失败new Function
,因为它不是沙盒。 new Function(...)
引发EvalError
抱怨使用它。
new Function
由于eval
而无法在非沙盒中失败 - 如new Worker
适用于非沙箱我的CSP如下:
sandbox allow-scripts script-src 'self' 'unsafe-eval'; object-src 'self'
如何让new Function
在Web Worker中工作?
答案 0 :(得分:5)
有一种称为内联工作的技术,我建议使用它。
这是使用WebWorkers tutorial中HTML5 rock网站上的示例代码进行描述的。这样您就可以将该站点列为沙盒,但由于不需要执行外部请求,因此它也应该以沙盒模式运行。