我正在开发一个我想在CDN上托管的库。该库将用于跨多个服务器的许多不同域。该库本身包含一个加载web worker(worker.js)的脚本(现在我们称之为script.js)。执行来自不同来源的网络工作者
加载库本身非常简单:只需将<script type="text/javascript" src="http://cdn.mydomain.com/script.js"></script>
标记添加到我想使用该库的域(www.myotherdomain.com)。但是,由于图书馆正在从http://cdn.mydomain.com/worker.jsnew Worker('http://cdn.mydomain.com/worker.js')
加载工作人员,我得到一个SecurityException。在cdn.mydomain.com上启用CORS。
对于网络工作者,不允许在远程域上使用web worker。使用CORS不会有帮助:浏览器似乎忽略它,甚至不执行预检检查。
解决方法是执行一个XMLHttpRequest来获取worker的源代码,然后创建一个BLOB url并使用这个url创建一个worker。这适用于Firefox和Chrome。但是,这似乎不适用于Internet Explorer或Opera。
解决方案是将工作人员放在www.myotherdomain.com上或放置一个代理文件(只需使用XHR或importScripts从cdn加载工作人员)。我不喜欢这个解决方案:它需要我在服务器上放置额外的文件,并且由于该库在多台服务器上使用,更新将很困难。
我的问题包括两个parsts的:
- 是否有可能对远程出身工人为IE 10+?
- 如果是1,那么最好如何处理跨浏览器?
或者您可以自己托管脚本并节省所有这些麻烦...... – 0xcaff
当然,但如果脚本作为提供给其他用户的网站的库的工作人员加载,则这是不可能的,这是该问题的用例。 – MrP