gpt4 book ai didi

javascript - 在客户端 JavaScript 中创建 TCP/IP 套接字

转载 作者:行者123 更新时间:2023-12-01 01:43:53 28 4
gpt4 key购买 nike

我有一个java客户端,我需要用(客户端)javascript重写它。我像这样打开java Socket:

Socket socket = new Socket("127.0.0.1", 5015);

所以我尝试在javascript中使用websocket: 让套接字 = new WebSocket("http://127.0.0.1:5015 ");

但是这里我有一个js错误:

Uncaught DOMException: Failed to construct 'WebSocket':

URL 的方案必须是“ws”或“wss”。不允许使用“http”。

我还尝试使用'ws'或'wss'协议(protocol),但服务器不想与此类协议(protocol)握手。

有没有办法在客户端 JavaScript 中建立这样的套接字连接,或者绝对禁止?

最佳答案

答案比“不,你做不到”要复杂一点。

在网络浏览器中运行的常规网页中的 JavaScript 无法打开普通套接字。根本原因是对用户来说存在安全风险。所以这是故意不允许的。

WebSockets 是实现此目的的安全方法。与其他浏览器安全机制结合使用,它们限制允许网页连接的内容。

然而,这并不是故事的结局。 可信代码有可能(至少在理论上)发送和接收 TCP 和 UDP 流量。问题是执行此操作的 API 是非标准的(例如特定于浏览器的)。在某些情况下,它们本身作为第 3 方浏览器扩展实现。

因此,如果您确实想为您的应用程序实现这一点,则必须将代码作为受信任的浏览器插件/扩展进行分发,并处理一系列浏览器可移植性问题。

值得注意的是,曾经有一个 W3C 工作组试图标准化原始套接字 API,但他们已经正式放弃了他们的努力。他们的最新工作草案可以在以下位置找到:

最后,还有一个问题是,受信任的浏览器扩展/插件需要用户同意才能安装。考虑到与在用户浏览器中嵌入此类功能相关的深刻而微妙的安全问题,获得此类事情的知情同意非常困难。

关于javascript - 在客户端 JavaScript 中创建 TCP/IP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52125356/

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