我在nodejs app中有两台服务器。
我使用两个服务器http-server
用于静态html文件(即index.html)和express
用于节点API。现在我收到CORS过滤器错误。即使我在两台服务器上启用了cors过滤器。
我尝试过这些组合。 1.使用中间件在节点服务器上启用它。 即以下代码。
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");
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
next();
});
并使用以下命令在http-server
上。
http-server --cors
我仍然遇到以下错误。
我猜这里两台服务器上的启用都不会起作用,因为两种资源都有不同的CORS值。但是我该如何解决呢?任何帮助将不胜感激。
Update-1尝试了cors package
每次服务器重启时,我都尝试过以下代码示例。
app.use(cors());
也是这个。
app.use(cors());
app.options('*', cors());
这个具有特定配置的。
app.use(cors());
var whitelist = ['http://localhost:8080']
var corsOptions = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
}
app.options('*', cors(corsOptions));
每次我在输出控制台中得到相同的响应。
这些是路线。
module.exports = function(app){
app.get('/get_tuna/:id', function(req, res){
tuna.get_tuna(req, res);
});
app.get('/add_tuna/:tuna', function(req, res){
tuna.add_tuna(req, res);
});
app.get('/get_all_tuna', function(req, res){
console.log('###### ++++++++++ 2 - This is called first');
tuna.get_all_tuna(req, res);
});
app.get('/change_holder/:holder', function(req, res){
tuna.change_holder(req, res);
});
app.get('/api/get_available_vault_balance/', function(req, res){
/// --------- 3
console.log('VAULT >> API is called >>> :) ');
vaultbackendservice.get_available_vault_balance(req, res);
});
}