JSc*_*ott 10 javascript html5 web-worker cors
在创建依赖于Web worker的托管API时,我遇到了一个有趣的问题.我希望得到一些社区反馈.
我的服务器使用适当的CORS头设置,以提供工作者JS文件,并可以使用XMLHttpRequest对象检索.但是,当URL被赋予new Worker()它无法构建时,引用原点是问题.这似乎是Firefox和Chrome上的一个问题.亲自检查一下,我的解决方法,在这里:http://jsfiddle.net/5ag42hb1/11/
这不是奇怪的行为吗?Mozilla文档说Web Workers 必须遵守同源策略并使用CORS来允许跨源访问.
小提琴有一个解决方法,将文件存储在blob中,然后将其传递给worker.虽然看起来不太理想,但却引入了许多不必要的复杂性.谁能想到更清洁的解决方案?是否有良好的渠道可以正确实施?
我做了很多挖掘并询问了IRC频道.感谢Mozilla网络上的#developers中的人们,我得到了一些非常好的答案.希望这将有助于处理与我相同情况的任何人.
总而言之,HTML规范概述了运行new Worker('http://remoteorigin.com/worker.js')应该使用远程源的安全上下文来执行worker.有些东西就像CORS,但并不完全是因为它是执行权而不是阅读权.
那么为什么现在不是这样呢?因为浏览器还没有实现完整的规范.把它作为值得期待的东西.
在那之前,实际上有2个解决方法.我概述了上面的blob方法,但我们也可以使用importScripts().如果你不能修改Worker本身,你可能会创建一个shell Worker,它只是实现你真正想要的Worker.