为什么node.js服务器在我的子域上不起作用(在WHM服务器上使用cloudflare)?



我的节点.js服务器在我的实时网站"https://www.example.com"上运行良好,但是开发环境抛出以下控制台错误:

"XMLHttpRequest 无法加载 https://dev.example.com:2083/socket.io/?EIO=3&transport=polling&t=LtTLz1_。请求的资源上不存在"访问控制允许源"标头。因此,不允许访问源"https://dev.example.com"。响应具有 HTTP 状态代码 522。

我正在使用 cloudflare,我有两个节点.js服务器正在运行,实时服务器在端口 2053 上运行,dev 在端口 2083 上运行。

我尝试了几种方法来添加标头访问控制允许原产地:*,但似乎没有任何效果。

这是我的节点.js脚本的顶部:

var fs = require('fs');
var options = {
ca: fs.readFileSync(__dirname + '/ca.pem'),
key: fs.readFileSync(__dirname + '/file.pem'),
cert: fs.readFileSync(__dirname + '/file.crt')
};
var express = require('express'),
app = express();
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
var https = require('https'),
server = https.createServer(options, app),
io = require('socket.io').listen(server);
server.listen(2083);

我在这里缺少什么吗?

事实证明,它与Cloudflare无关。我在 WHM/cpanel 服务器上,WHM 使用端口 2083 (SSL( 和 2087 (SSL(。

我改用了端口 8443,它工作得很好。

因此,总而言之,虽然Cloudflare打开了2083和2087,但不要将它们与cpanel结合使用。

最新更新