gpt4 book ai didi

javascript - HTML5 Web Workers 可以/应该使用 CORS 进行跨域吗?

转载 作者:太空狗 更新时间:2023-10-29 13:27:54 65 4
gpt4 key购买 nike

我在创建依赖网络 worker 的托管 API 时遇到了一个有趣的问题。我希望能得到一些关于它的社区反馈。

我的服务器设置有适当的 CORS header 来传送工作 JS 文件,并且可以使用 XMLHttpRequest 对象进行检索。但是,当将 URL 提供给 new Worker() 时,它无法构建,并指出来源是问题所在。这似乎是 Firefox 和 Chrome 上的一个问题。自己检查一下,以及我的解决方法,在这里:http://jsfiddle.net/5ag42hb1/11/

这不是奇怪的行为吗? Mozilla 文档说网络 worker must obey same-origin policy并使用 CORS 允许跨域访问。

fiddle 有一个解决方法,就是将文件存储在一个 blob 中,然后将其传递给 worker。虽然它似乎不太理想,但引入了很多不必要的复杂性。谁能想到一个更清洁的解决方案?是否有好的 channel 可以正确实现?

最佳答案

我在 IRC channel 上进行了大量的挖掘和询问。多亏了 Mozilla 网络上#developers 中的那些人,我得到了一些非常好的答案。希望这对和我情况相同的人有所帮助。

总而言之,HTML 规范概述了运行 new Worker('http://remoteorigin.com/worker.js') 应该使用远程来源的安全上下文执行工作程序。类似于 CORS 但又不完全是因为它是执行权而不是读取权。

那么为什么现在不是这样呢?因为浏览器还没有实现完整的规范。将其记为值得期待的事情。

到那时,实际上有 2 个解决方法。我在上面概述了 blob 方法,但我们也可以使用 importScripts() .如果您不能修改 Worker 本身,您可能会制作一个 shell Worker,它只实现您真正想要的 Worker。

关于javascript - HTML5 Web Workers 可以/应该使用 CORS 进行跨域吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25458104/

65 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com