HTML5 Web工作者是否可以/应该使用CORS进行跨域工作
Can/should HTML5 Web Workers use CORS for cross-origin?
我在创建一个依赖于web worker的托管API时遇到了一个有趣的问题。我希望能得到一些社区的反馈。
我的服务器设置适当的歌珥头提供职工JS文件,可以检索一个XMLHttpRequest
对象。然而,当URL被给予new Worker()
时,它无法构建,理由是来源是问题。这似乎在Firefox和Chrome上都是一个问题。您可以在这里查看它,以及我的解决方案:http://jsfiddle.net/5ag42hb1/11/
这不是奇怪的行为吗?Mozilla文档说Web worker必须遵守同源策略,并使用CORS来允许跨源访问。
小提琴有一个解决方案,将文件存储在blob中,并将其传递给工作器。但这似乎不太理想,引入了许多不必要的复杂性。有人能想到更干净的解决方案吗?是否有一个良好的渠道来实现这一点?
我在IRC频道上做了很多调查和询问。感谢Mozilla网络上的开发者,我得到了一些很好的答案。希望这篇文章能帮助到和我有同样处境的人。
总而言之,HTML规范概述了运行new Worker('http://remoteorigin.com/worker.js')
应该执行具有远程源的安全上下文的工作线程。有点像CORS,但又不完全一样因为它是执行权而不是读权。
那为什么现在不是这样呢?因为浏览器还没有实现完整的规范。把它记为值得期待的事情。
之前,实际上有2个解决方案。我在上面概述了blob方法,但我们也可以使用importScripts()。如果你不能修改Worker本身,你可以创建一个shell Worker来实现你真正想要的Worker。
我遇到了类似的问题,并部分修复了data:
url:https://www.npmjs.com/package/crossoriginworker
对于一些解决方案来说,这已经足够好了,但是当我们要使用一些更高级的api(如BarcodeDetector)时,事情就变得越来越困难了。
- XMLHttpRequest在$.ajax工作的地方给出了CORS错误
- 无法在 jquery 中获取 Ajax CORS 请求以工作
- CORS 请求与 Safari 一起工作
- 如何使工作 Chrome 扩展程序的未捕获异常处理程序(由于 CORS 保护而不起作用)
- CORS在Angular中不工作
- 无法使CORS与Slim API一起工作
- parse.com Javascript CORS更新用户名时出错(在解析端工作)
- HTML5 Web工作者是否可以/应该使用CORS进行跨域工作
- CORS与XMLHttpRequest不工作
- CORS重定向工作异常
- CORS标头在MEAN堆栈应用程序中不工作
- Angular + CORS -不工作在Chrome /如何修复和调试
- CDN Instagram照片/视频的脏画布.CORS不工作
- CORS调用在PHP中工作,但不能在javascript/jquery中工作
- 为什么经过验证的CORS请求的preflight OPTIONS请求在Chrome中工作,而在Firefox中不起作用?
- 设置javascript图像与S3 CORS很少工作
- CORS问题在顶点应用程序不工作
- 可以't设法使CORS请求工作
- 让 CORS 与 JQuery 客户端、节点/快速服务器一起工作时出现问题
- Webix ajax与CORS工作无处不在,除了IE