Socket.io + nodejs + https导致连接失败,并显示错误消息“No'Access-Control-Allow-Origin'标头是预先安装的...”

时间:2014-06-27 14:02:42

标签: node.js ssl websocket socket.io

所以我一直在使用socket.io和NodeJS很长一段时间,但我从未试图在安全的套接字层上使用socket.io。

最近我一直试图让它与有效证书一起使用。但是,每次我尝试连接到socket.io服务器时,chrome控制台中都会显示以下错误消息;

XMLHttpRequest cannot load domain:12457/socket.io/1/?t=1403871407291. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'domain' is therefore not allowed access.

据我所知,域必须位于Access-Control-Allow-Origin标头中。我已使用以下代码将该特定标头添加到HTTPS服务器;

var https           = require ('https');
var fs              = require ('fs');
var options         = {
                    key: fs.readFileSync('./cert/private.key'),
                    cert: fs.readFileSync('./cert/certificate.crt'),    
                    //requestCert: true,
                    ca: [ fs.readFileSync('./cert/ca.pem'), fs.readFileSync('./cert/sub.class1.server.ca.pem') ]
                };

var server          = https.createServer (options, function (req, res) {
res.setHeader("Access-Control-Allow-Origin", "domain");
res.writeHead (200);
res.end ("Nothing to see here :o");
});

var socketio            = require ('socket.io').listen (server);

server.listen (12457);

当我运行添加了Access-Control-Allow-Origin的服务器时,我收到同样的错误。但是,当我使用单独的GET请求请求标头时,我会收到以下内容:

HTTP/1.1 200 OK => 
Access-Control-Allow-Origin => domain
Date => Fri, 27 Jun 2014 12:18:45 GMT
Connection => close

请注意,此次使用正确的域设置了Access-Control-Allow-Origin。

我不知何故感觉HTTPS服务器正在为自己的HTTPS服务器设置标头,但对于socket.io服务器则没有。我不知道如何解决这个问题,所以我的问题是;

有人知道我做错了吗?

0 个答案:

没有答案