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

时间:2017-08-13 20:52:15

标签: javascript node.js cors

我的node.js服务器在我的实时网站“https://www.example.com”上运行得很漂亮,但是开发环境会引发以下控制台错误:

“XMLHttpRequest无法加载https://dev.example.com:2083/socket.io/?EIO=3&transport=polling&t=LtTLz1_。请求的资源上没有'Access-Control-Allow-Origin'标头。因此不允许原点”https://dev.example.com“访问。响应具有HTTP状态代码522。“

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

我尝试了几种方法来添加标题Access-Control-Allow-Origin:*并且似乎没有任何效果。

这是我的node.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);

这里有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

原来它与cloudflare无关。我在WHM / cpanel服务器上,WHM使用端口2083(SSL)和2087(SSL)。

我使用的是端口8443而且效果很好。

总而言之,虽然cloudflare有2083和2087开放,但不要将它们与cpanel结合使用。