Html Can';切换到HTTPS后无法连接到服务器
所以我切换到HTTPS,除了套接字之外,一切都很好 如果我尝试使用HTTP访问网站,套接字会连接,但如果我尝试使用HTTPS连接,我会得到: 控制台上的错误:Html Can';切换到HTTPS后无法连接到服务器,html,node.js,websocket,socket.io,Html,Node.js,Websocket,Socket.io,所以我切换到HTTPS,除了套接字之外,一切都很好 如果我尝试使用HTTP访问网站,套接字会连接,但如果我尝试使用HTTPS连接,我会得到: 控制台上的错误: Failed to load resource: net::ERR_CONNECTION_CLOSED Failed to load resource: net::ERR_CONNECTION_CLOSED Failed to load resource: net::ERR_CONNECTION_CLOSED Failed to load
Failed to load resource: net::ERR_CONNECTION_CLOSED
Failed to load resource: net::ERR_CONNECTION_CLOSED
Failed to load resource: net::ERR_CONNECTION_CLOSED
Failed to load resource: net::ERR_CONNECTION_CLOSED
前端:
function connect()
{
if (!SOCKET)
{
var hash = getCookie('hash');
if (hash == "") {
//$.notify('You must login!', 'success');
}
if (hash != "") {
$.notify('Connecting...', 'success');
}
SOCKET = io(':3001');
SOCKET.on('connect', function(msg) {
if (hash != "") {
//$.notify('Connected!', 'success');
}
SOCKET.emit('hash', {
hash: hash
});
$('#games tr').remove();
});
SOCKET.on('connect_error', function(msg) {
$.notify('Connection lost!', 'success');
});
SOCKET.on('message', function(msg) {
onMessage(msg);
});
SOCKET.on('disconnect', function(m) {
SOCKET.emit('disconnect', {
uhash: hash
});
});
}
else
{
console.log("Error: connection already exists.");
}
}
Node.js/Backend
var httpsOptions = {
cert: fs.readFileSync("/path/to/cert/cert.pem"),
ca: fs.readFileSync("/path/to/cert/chain.pem"),
key: fs.readFileSync("/path/to/cert/privkey.pem"),
}
var server = require('https').createServer(httpsOptions);
var io = require('socket.io').listen(server);
server.listen(3001);
您的节点应用程序应该只接受HTTP连接。您的Apache服务器应该负责HTTPS。这简化了您的应用程序,并允许Apache在您决定这样做时为您实现负载平衡 因此,应用程序和Apache之间应该是HTTP,然后是Apache和客户端之间的HTTPS。有很多关于如何做到这一点的指南,我建议阅读
如果您决定反对这一点,并在web应用程序级别实现SSL(不推荐),那么我们需要更多信息。您的节点应用程序应该只接受HTTP连接。您的Apache服务器应该负责HTTPS。这简化了您的应用程序,并允许Apache在您决定这样做时为您实现负载平衡 因此,应用程序和Apache之间应该是HTTP,然后是Apache和客户端之间的HTTPS。有很多关于如何做到这一点的指南,我建议阅读
如果您决定反对这一点,并在web应用程序级别(不推荐)实施SSL,则我们需要更多信息。实际错误是什么?套接字未连接..AKA i get Connection lost!我不是HTTPS证书方面的专家,但这些证书真的可以应用于端口3001吗?我认为这是行不通的。我认为端口3001是内部的,由Apache访问。我强烈建议使用Apache for HTTPS而不是Node。实际错误是什么?套接字未连接..AKA我失去了连接!我不是HTTPS证书方面的专家,但这些证书真的可以应用于端口3001吗?我认为这是行不通的。我认为端口3001是内部的,由Apache访问。我强烈建议使用Apache for HTTPS而不是Node。这样Node.js服务器就可以与HTTP.createserver保持在HTTP中?是的,您应该将Node服务器绑定到127.0.0.1,这样它只能在内部访问,然后让Apache代理连接到它。因此Apache将接收HTTPS连接,然后通过HTTP将数据传递给节点。这在安全性方面很好,因为它是一种内部通信。顺便说一句,HTTPS已经可以正常工作了,除了Socket.IO没有连接。哦,对了。您可以使用Postman之类的程序与它交互吗?它应该可以,因为Node.js服务器没有提供任何ERORR。我很确定前端js有问题。因此node.js服务器可以与HTTP.createserver一起保留在HTTP中?是的,您应该将节点服务器绑定到127.0.0.1,这样它只能在内部访问,然后让Apache代理连接到它。因此Apache将接收HTTPS连接,然后通过HTTP将数据传递给节点。这在安全性方面很好,因为它是一种内部通信。顺便说一句,HTTPS已经可以正常工作了,除了Socket.IO没有连接。哦,对了。您可以使用Postman之类的程序与它交互吗?它应该可以,因为Node.js服务器没有提供任何ERORR。我很确定正面js有问题。