1

我知道这个问题可能被认为是重复的,但它是一项新技术,我找不到最近对我的发现的确认。我还认为将所有错误消息放在一个地方可能很有用(随意添加任何其他浏览器)。

尝试从另一个域加载工作脚本:

new Worker('http://otherdomain.co/worker.js');

我已将标题(使用ModHeader Chrome Extension)设置为:

Access-Control-Allow-Methods:* Access-Control-Allow-Origin:*

但在 Chrome 中我得到:

Uncaught SecurityError: Failed to construct 'Worker': Script at 'http:otherdomain.co/worker.js' cannot be accessed from origin

Safari 给我:

[Error] SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent

火狐给了我:

SecurityError: The operation is insecure.

还是这不是我们能做的吗?如果是这样,什么被认为是最佳实践?

4

2 回答 2

5

我知道现在有点晚了,但这是你要找的吗?

“为指定的 blob 创建一个 url,可以将其传递给需要 url 的方法。完成返回的 url 后,调用 revokeObjectURL() 以释放与创建的 url 关联的资源。”

这种方法很容易让您使用本地脚本而不是远程 url 创建 Worker。

于 2018-02-26T16:55:15.190 回答
3

您不能创建跨域网络工作者。

注意:作为 Worker 构造函数参数传递的 URI 必须遵守同源策略。目前,浏览器供应商对于哪些 URI 是同源的存在分歧;Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) 及更高版本允许数据 URI,而 Internet Explorer 10 不允许 Blob URI 作为工作人员的有效脚本。

来源:https ://developer.mozilla.org/en/docs/Web/Guide/Performance/Using_web_workers

我能想到的一种解决方法是创建一个服务器端脚本来加载所需的远程 JS 文件,并将其从您的域提供给浏览器。

例如:您将 url 提供给:

http://YOUR_DOMAIN/getRemoteJS.php

该 PHP 文件将请求服务器端的远程文件,并将其作为响应回显,并将 mime-type 设置为 application/javascript。

我没有亲自尝试过这种解决方法,但您也许可以研究一下。

祝你好运!

于 2014-05-30T12:02:01.487 回答