把ws改成wss的步骤是什么?
wss 是通过普通 HTTP 进行升级还是 wss 仅适用于 HTTPS?
webSocket = new WebSocket("ws://localhost:port/Esv/ocp");
当我将 ws 更改为 wss 时,工作正常
webSocket = new WebSocket("wss://localhost:port/Esv/ocp");
它显示这个错误:
连接建立时出错:net::ERR_SSL_PROTOCOL_ERROR
简洁版本
是否使用 SSL
你可能有一个SSL证书问题。连接点规则可以是概括为:
-
wss
连接上https only
-
ws
连接上http
and反之亦然:
-
https
接受wss only
-
http
接受ws only
Errors
以下情况会导致报错(在Firefox下进行测试):
- If you want to connect a
wss
connection to a http
endpoint. In my tests, I had an
InvalidStateError:尝试使用不可用或不再可用的对象
- If you want to connect a
ws
connection to a https
endpoint, you'll have the error
SecurityError:操作不安全。
正式答复
websocket的圣经是RFC 6455。在部分4.1.5:
If /secure/为 true 时,客户端必须在打开连接之后、发送握手数据之前通过连接执行 TLS 握手 [RFC2818]。如果失败(例如,无法验证服务器的证书),则客户端必须WebSocket 连接失败并中止连接。否则,该通道上的所有进一步通信必须通过加密隧道 [RFC5246] 运行。
The secure标志由 URI 定义。第 3 节定义了什么是secure
如果方案组件不区分大小写地匹配“wss”,则该 URI 被称为“安全”(并且据说“设置了安全标志”)。
TL;DR
如果你想使用wss
:
- 您必须激活 SSL
- 您的端点必须受到保护(
https://...
): 不允许“安全降级”
如果你想使用ws
:
- 确保您的端点未启用 SSL (
http://...
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)