在Node Express中允许多个Cors

时间:2018-08-24 14:15:32

标签: node.js express cors

我正在尝试在我的Express API中允许带有节点的多个cors,我已经能够使其正常工作,但是目前面临两个问题。

  1. 我无法使用邮递员连接到我的api,因为我检查了一下,发现从邮递员发送的来源是不确定的。
  2. 我有一个也可以与服务器通信的移动应用程序,问题是我允许多个特定来源后,该应用程序也无法与服务器通信。

如何解决此问题,因为我无法让api服务器保持打开状态以允许来自每个来源的通信。

3 个答案:

答案 0 :(得分:0)

您是否尝试过Cors for nodejs

添加依赖项:

$ npm install cors --save

然后将cors添加到您的app.js

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

app.use(cors())

答案 1 :(得分:0)

在生产环境中尝试使用此方法,而不是在Access-Control-Allow-Origin标头上使用*,对于开发允许的任何源都将不是问题(取决于您的情况)

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "yourdomain.com");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

答案 2 :(得分:0)

var a1 = [], a2 = [];
let m = mycars.length
    n = mycars[0].length;

a1.push(mycars[0]);

for(let i = 1; i<m; i++) {
   a2 = [];

   for(let j =0; j<n; j++){

       if(mycars[i][j] == mycars[i-1][j]) {
           a2.push('');
       } else {
           a2.push(mycars[i][j]);
       }
   }
   //This is compressed array
   a1.push(a2);
}

var mycars_compressed = a1; 

在您的服务器上尝试一下。如果要传递额外的标头参数,则需要在res.setHeader('Access-Control-Allow-Headers','Content-Type,token');中添加这些变量。但是请记住,不要在变量名中使用'-'。