使用Socket.io的HTTPS前端未连接到NodeJS后端服务器

时间:2019-02-13 13:28:51

标签: node.js reactjs express socket.io

我有一个Debian 9 Server服务器A,它通过Nginx提供一个https页面(使用ReactJS构建),该证书是使用Certbot获得的。

在服务器A上,我还有一个后端NodeNode文件,该文件用于在特定端口上为传入的socket.io连接提供服务,并通过“ node file.js”命令启动它。

当我使用http时,前端工作正常,但是一旦切换到https,前端就无法再连接到后端,并出现错误消息(在Firefox上),例如:< / p>

  

阻止加载混合的活动内容。

这是相关的客户端代码:

import * as io from "socket.io-client";
const socket = io.connect("http://publicip.of.my.server:7419");

这是相关的服务器端代码:

const server = require('http').createServer()
const io = require('socket.io')(server)

...

server.listen(7419, function (err) {
    if (err) throw err
        console.log('listening on port 3000')
})

我尝试将其添加到服务器端代码中:

  

io.set('origins','');

添加了这些内容后,我注意到,如果我使用公共IP地址(http://publicip.of.my.server连接到网站,则socket.io连接有效,但是如果我键入网站(然后重定向到https),则不会成功

我的问题是:

  • 我应该对我的代码进行哪些更改以切换到https?

  • 我的前端和后端在同一台服务器A中,为什么会发生这种情况?

0 个答案:

没有答案