如何在express.js 4.x上为所有文件启用CORS?

Mat*_*ski 23 node.js express

我一直在接受

跨源请求已阻止:同源策略禁止在http://example.com:2013/socket.io/?EIO=3&transport=polling&t=1433950808025-0读取远程资源 .(原因:CORS请求失败).

当我尝试访问我的node.js. 这对我不起作用:

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();
});
Run Code Online (Sandbox Code Playgroud)

@edit:这是更新的完整代码:

var express = require('express');
var http = require('http');
var expressvar = express();

expressvar.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Headers', 'accept, authorization, content-type, x-requested-with');
    res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
    res.setHeader('Access-Control-Allow-Origin', req.header('origin'));
    next();
});
expressvar.use(express.static('../'));
expressvar.use("/socket.io", express.static('../socket.io'));
var app = http.createServer(expressvar);
var io = require('socket.io').listen(app);
app.listen(2013);
Run Code Online (Sandbox Code Playgroud)

cml*_*ndz 22

试试这个解决方案(编辑包含完整的工作代码)

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

io.set('origins', '*:*');

app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', req.get('Origin') || '*');
  res.header('Access-Control-Allow-Credentials', 'true');
  res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
  res.header('Access-Control-Expose-Headers', 'Content-Length');
  res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range');
  if (req.method === 'OPTIONS') {
    return res.send(200);
  } else {
    return next();
  }
});

server.listen(80);

app.get('/', function (req, res) {
  res.send('OK');
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});
Run Code Online (Sandbox Code Playgroud)


Pla*_*ato 6

cors包这样做

// npm install --save cors
var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());
app.use(express.static());
app.get('*', function(){});
require('http').createServer(app).listen(3000)
Run Code Online (Sandbox Code Playgroud)