我正在尝试在互联网上打开我的 React 应用程序。该应用程序在本地主机上运行良好。但是在我的 Apache 网络服务器上使用它时将不起作用。我正在运行 Ubuntu 16.04。我有我正在使用转发的端口,并且正在使用我的地址。这是我收到的来自浏览器控制台的错误
在本地主机上,这个地址工作得很好,但是,当我更改要在我的 apache 网络服务器上使用的地址和端口时,我得到这个错误
使用这个地址 wss://www.example.io:4488/
我得到这个错误:
与“wss://www.example.io:4488/”的 WebSocket 连接失败:连接建立时出错:net::ERR_SSL_PROTOCOL_ERROR
经过一些研究后,我似乎需要使用启用了 SSL 的端口,但是是否可以启用端口 443 以外的其他 SSL 端口?
然后我尝试使用“ws”并得到了这个错误,
ws://www.example.io:4488/
无法构建“WebSocket”:可能无法从通过 HTTPS 加载的页面启动不安全的 WebSocket 连接。
最佳答案
“是否可以使用端口 443 以外的 SSL 启用端口?”
是的,就像你做的那样(wss://www.example.io:4488)......虽然在使用非标准端口时,确保没有防火墙静默阻止连接(只需使用 telnet 确认,例如 telnet www.example.io 4488
)
“然后我尝试使用‘ws’并遇到了这个错误,”
是的,意料之中。通过 HTTPS 传送的网站不能有不安全的 websockets。
问题的一个可能原因是服务器 SSL 证书。当您的浏览器尝试打开 websocket 时,它将收到服务器的 SSL 证书并尝试进行验证。如果它无法验证,它将不允许套接字打开。它通常不适用于自签名证书。
相关:
Firefox disconnects websockets connection for a self signed certificate
What is the problem with Websocket and Self-Signed SSL certificate
关于ssl - WebSocket 握手 : Unexpected response code: 200 - React Client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58876395/