websocket 可以跨域吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了websocket 可以跨域吗相关的知识,希望对你有一定的参考价值。

可以的,websocket本身就允许跨域连接 参考技术A 传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。

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

【中文标题】HTML5 Web Worker 可以/应该使用 CORS 进行跨域吗?【英文标题】:Can/should HTML5 Web Workers use CORS for cross-origin? 【发布时间】:2014-10-16 23:05:38 【问题描述】:

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

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

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

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

【问题讨论】:

那么你的小提琴意味着什么?我收到 2 条成功消息。 3 条成功消息。它通过 AJAX 得到很好,如果你将它作为 blob 传递它可以工作,但如果你将 URL 传递给工作人员,那么它似乎会忽略 CORS 并失败。我想要一个单独的小提琴来解决这个问题,但我没有足够的声誉,所以我把它全部塞进了一个。 【参考方案1】:

我做了很多挖掘工作,并在 IRC 频道上四处询问。感谢 Mozilla 网络上#developers 中的人,我得到了一些很好的答案。希望这对和我有同样情况的人有所帮助。

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

那么为什么它现在不是这样工作的呢?因为浏览器还没有实现完整的规范。把它写成值得期待的事情。

在此之前,实际上有两种解决方法。我概述了上面的 blob 方法,但我们也可以使用importScripts()。如果你不能修改 Worker 本身,你可能会创建一个 shell Worker 来简单地实现你真正想要的 Worker。

【讨论】:

2022 年的情况似乎没有太大变化。不幸的是,blob 解决方案不能在内容安全策略严格的环境中使用。我没有使用 importScripts 获得第二个解决方案。你能分享一个例子吗?

以上是关于websocket 可以跨域吗的主要内容,如果未能解决你的问题,请参考以下文章

关于websocket跨域的一个奇怪问题

http网页建立websocket跨域问题,怎么解决?

springboot2.1.3整合websocket和websocket-security支持跨域连接

Nginx配置websocket的反向代理

WebSocket 解决javascript跨域问题一剂良药

Websocket 和跨域