跨域Web工作者

时间:2014-05-30 11:29:49

标签: javascript browser cross-domain web-worker xdomainrequest

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

尝试从其他域加载工作程序脚本:

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

Firefox给了我:

SecurityError: The operation is insecure.

这还不是我们能做的吗?如果是这样,那么最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

您不能创建跨域Web工作者。

  

注意:作为Worker构造函数的参数传递的URI必须遵守   同源政策。目前存在分歧   浏览器厂商关于哪些URI是同源的;壁虎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文件,并从您的域中将其提供给浏览器。

例如:您提供以下网址:

http://YOUR_DOMAIN/getRemoteJS.php

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

我没有亲自尝试过这种解决方法,但您可以查看它。

祝你好运!