【发布时间】:2013-01-20 15:43:35
【问题描述】:
我无法让new Function 在 Web Worker 中工作。我有一个生成 Web Worker 的 HTML 页面。这个 Web Worker 通过new Function(str) 执行代码。我正在尝试在打包的 Chrome 应用程序中使用它,该应用程序需要使用类似 eval 的代码的页面在清单中明确列为沙盒页面。
现在,有两种选择:
-
不要列出要沙盒化的页面。如果这样做,我可以使用
new Function,但我无法生成 Web Worker,因为我无法发出任何请求(沙盒页面具有唯一的来源)。new Worker(...)抛出SECURITY_ERR。-
new Function在沙盒中工作 -
new Worker由于唯一来源而在沙箱中失败
-
-
不要列出要沙盒化的页面。如果这样做,我可以生成一个 Web Worker,但该 Worker 不能使用
new Function,因为它没有被沙盒化。new Function(...)抛出EvalError抱怨使用它。-
new Function由于是eval-like 而在非沙盒中失败 -
new Worker在非沙盒中工作
-
我的 CSP 如下:
sandbox allow-scripts script-src 'self' 'unsafe-eval'; object-src 'self'
我该怎么做才能让new Function 在 Web Worker 中工作?
【问题讨论】:
标签: javascript google-chrome web-worker content-security-policy function-constructor