无法在 Express 中设置标题

Dan*_*iel 5 http-headers node.js cors express

这些东西已经困扰我好几天了,我快要疯了......我无法 set.header('Access-Control-Allow-Origin') 或任何其他与此相关的标头。我需要它来访问远程 API。我已经下载了 chrome cors 扩展,启用后一切正常。当我禁用时,我收到一个美丽的错误:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:8080 ”。

我已经尝试了很多东西,甚至 cors npm 模块,仍然是一样的。

这是我的代码:

var express     = require('express');
var app         = express();

app.use('/dist', express.static(__dirname + '/dist'));


app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  next();
});

var port = process.env.PORT || 8080;


app.get('*', function(req, res, next) {
  console.log(req.get('Access-Control-Allow-Origin'));
  res.sendFile(__dirname + '/dist/index.html');
});


app.listen(port);
console.log('listen at ' + port);
Run Code Online (Sandbox Code Playgroud)

Ebr*_*ani 2

请检查一下:

var express     = require('express');
var app         = express();

function setHeaders(res, path, stat){
res.append('Access-Control-Allow-Origin', '*');
  res.append('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
  res.append('Access-Control-Allow-Headers', 'Content-Type');
}

app.use('/dist', express.static(__dirname + '/dist', {setHeaders: setHeaders}));


/*app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  next();
});*/

var port = process.env.PORT || 8080;


/*(app.get('*', function(req, res, next) {
  console.log(req.get('Access-Control-Allow-Origin'));
  res.sendFile(__dirname + '/dist/index.html');
});*/


app.listen(port);
console.log('listen at ' + port);
Run Code Online (Sandbox Code Playgroud)

http://localhost:8080/dist/index.html你可以看到之前设置的所有标题