我在努力保护我的网站
一切都很好,直到我终于安装了SSL证书(从CloudFlare,而不是自签名的)
所以问题是:当我通过HTTP打开我的网站时-一切都很完美,但是当我通过HTTPS打开它时-网站正在失去与主机的连接(需要工作)
在控制台中,我可以看到:
socket.io-1.4.5.js:1 GET https://188.226.131.219:8080/socket.io/?EIO=3&transport=polling&t=LlI-URk net::ERR_CONNECTION_CLOSED
如果我理解正确,这里是一个端口的问题。使用HTTP端口80是可以的,使用HTTPS端口443有问题。有没有办法交换端口?
4条答案
按热度按时间tquggr8v1#
您可以尝试以下操作:
在node.js后端,将socket配置为:
字符串
在客户端应用程序中,您需要连接为:
型
z5btuh9x2#
我只是想把这个扔出去。这是造成我一个类似的错误,可能是你正在寻找的。
socket.io的例子说使用ip地址将客户端脚本连接到服务器。类似这样:
字符串
然而,一旦你为你的SSL证书添加了一个“A”记录,你需要使用“A”记录的主机名,而不是它指向的IP地址。像这样:
型
zujrkrfu3#
看起来你的前端是在http://188.226.131.219上,而你在http://188.226.131.219:8080上有一个WebSocket服务。
您已经将前端配置为使用SSL证书,并且可以在https://188.226.131.219上访问它,但是到您的WebSocket服务的链接可能取决于用于加载前端的协议和主机,因此如果您从https://188.226.131.219加载它,那么前端中的JS将尝试连接到https://188.226.131.219:8080,但是您的WebSocket服务在那里侦听HTTP请求,而不是HTTPS请求。
首先,您需要设置您的WebSocket服务也使用SSL证书,但在不同的端口(例如8443),然后您将不得不修改您的前端,以便能够理解它是如何加载的(使用HTTP或HTTPS)并为WebSocket服务找出正确的端口。
daolsyd04#
我知道这有点旧,并回答了@stzoannos,但你真的不需要安装
express
让它工作。我让它这样工作:
字符串
您需要在
ssl
目录下有.pem
文件。请根据您的要求正确设置cors
。