ExpressJS服务器未设置正确的标头

时间:2015-08-21 22:02:30

标签: node.js express frontend backend

我在端口8080上创建了一个ExpressJS服务器,它将接收来自另一个在端口8889上运行的webapp的请求。我已经设置了相应的标头,但是浏览器控制台仍然提供了以下信息:

  

XMLHttpRequest无法加载http://localhost:8080/。通配符' *'不能用于“访问控制 - 允许 - 来源”#39;凭证标志为true时的标头。起源' http://localhost:8889'因此不允许访问。

服务器的代码写在这里:

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

app.set('port', 8080);

app.use(function(req, res, next) {
     res.header("Access-Control-Allow-Origin","http://localhost:8889");
     res.header("Access-Control-Allow-Credentials", true);
     res.header("Content-Type", "application/json");
     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
     next();
});

app.get('/', function (req, res) {
     res.send(JSON.stringify(json));
});

var server = app.listen(app.get('port'), function () {
     var host = 'localhost';
     var port = '8080';
     console.log('Server listening at http://%s:%s', host, port);
});

请求的代码在这里:

function getJSON(callback){
        return http.get({
                host: 'localhost',
                port: 8080,
        }, function (response){
                var body = '';
                response.on('data', function (d) {
                        body += d;
                });
                response.on('end', function(){
                    callback(JSON.parse(body));
            });
    }).on('error', function (err){console.log('couldnt get credentials');});
}

显然没有使用通配符。任何人都可以了解发生的事情吗?

1 个答案:

答案 0 :(得分:0)

我刚刚使用找到here的CORS节点模块,最终解决了问题。