我有一个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中,为什么会发生这种情况?