Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
否';访问控制允许原点';标头存在于node.js中节点static中请求的资源上_Node.js_Cors - Fatal编程技术网

否';访问控制允许原点';标头存在于node.js中节点static中请求的资源上

否';访问控制允许原点';标头存在于node.js中节点static中请求的资源上,node.js,cors,Node.js,Cors,我是node.js的新手,不知道如何克服这个问题。希望你能帮助我 我有一个运行在node.js中的服务器,它有node static和socket.io。代码如下 var numClients=0; var static = require('node-static'); //var static = require('express'); var http = require('http'); var file = new(static.Server)(); var app = http.cr

我是node.js的新手,不知道如何克服这个问题。希望你能帮助我

我有一个运行在node.js中的服务器,它有node static和socket.io。代码如下

var numClients=0;
var static = require('node-static');
//var static = require('express');
var http = require('http');
var file = new(static.Server)();
var app = http.createServer(function (req, res) {
res.setHeader('Access-Control-Allow-Origin', 'http://172.26.191.45:8080');

// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
file.serve(req, res);
}).listen(2013);


var io = require('socket.io').listen(app);


io.sockets.on('connection', function (socket){

function log(){
    var array = [">>> "];
    for (var i = 0; i < arguments.length; i++) {
        array.push(arguments[i]);
    }
    socket.emit('log', array);
}

socket.on('message', function (message) {
    log('Got message: ', message);
    socket.broadcast.emit('message', message); // should be room only
});


socket.on('create or join', function (room) {
    numClients=numClients+1;

    log('Room ' + room + ' has ' + numClients + ' client(s)');
    log('Request to create or join room', room);

    if (numClients == 0){
        socket.join(room);
        socket.emit('created', room);
    } else if (numClients == 1) {
        io.sockets.in(room).emit('join', room);
        socket.join(room);
        socket.emit('joined', room);
    } else { // max two clients
        socket.emit('full', room);
    }
    socket.emit('emit(): client ' + socket.id + ' joined room ' + room);
    socket.broadcast.emit('broadcast(): client ' + socket.id + ' joined room ' + room);

});

socket.on('disconnect', function () {
    numClients=numClients-1;
    log('Room has ' + numClients + ' client(s)');
});


});
我知道这是因为CORS。但是我添加了代码行来适当地设置标题。当我检查这个错误时,大多数人说如何在node.js中使用express来改进它,而不是node static


当我从另一个域访问时,是否有人可以建议我下一步可以做些什么以从服务器获得响应

这个问题可能有几种解释:

说明1:原点设置不正确 改变

res.setHeader('Access-Control-Allow-Origin', 'http://172.26.191.45:8080');

如果不起作用,则在服务器端输出请求源,并用此源替换“localhost”。(我不知道足够的节点来告诉您如何输出原点)

说明2:标题未正确输出 仔细检查从服务器返回的标题。您可以通过安装一些允许您查看请求标题的浏览器插件来实现这一点

确保标题正确无误。您需要设置的内容(对于PHP,但标题是相同的)

res.setHeader('Access-Control-Allow-Origin', 'http://172.26.191.45:8080');
res.setHeader('Access-Control-Allow-Origin', 'localhost');