CORS头在MEAN堆栈应用程序中不起作用

我正在开发使用MEAN堆栈(Node.js,Express,AngularJS和Mongoose)的应用程序。 我对这两者有一个基本的了解。 我的API运行在与我前端不同的端口上,因此,我在我的API文件中包含了CORS头文件。 不过,Chrome仍然给我这个错误:

XMLHttpRequest cannot load http://localhost:9000/#/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 

这是我在API中包含的头文件:

 app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); next(); }); 

我不知道我哪里错了。 如果它有帮助,我试图加载一个用户对象,以便在个人资料页面上显示信息。 这是我的configuration文件控制器的代码:

 angular.module('angTestApp') .controller('ProfileCtrl', function ($scope, $http) { $http.get('http://localhost:8080/profile') .success(function (user) { $scope.user = user; console.log(user); }); }); 

编辑这里是我的server.js文件,如果有帮助:// server.js

 // BASE SETUP // ============================================================================= // call the packages we need var express = require('express'); // call express var cors = require('cors'); var app = express(); // define our app using express var bodyParser = require('body-parser'); var mongoose = require('mongoose'); mongoose.connect('mongodb://test:test@novus.modulusmongo.net:27017/a3pemoGa') var classroom = require('./app/models/classroom'); var article = require('./app/models/article'); var user = require('./app/models/user'); //From Tutorial var passport = require('passport'); var flash = require('connect-flash'); var morgan = require('morgan'); var cookieParser = require('cookie-parser'); var session = require('express-session'); // configure app to use bodyParser() // this will let us get the data from a POST app.use(bodyParser()); app.use(cors()); //app.use(express.static(__dirname + '/public')); var port = process.env.PORT || 8080; // set our port // ROUTES FOR OUR API // ============================================================================= // more routes for our API will happen here // REGISTER OUR ROUTES ------------------------------- //From tutorial // set up our express application require('./app/config/passport')(passport); // pass passport for configuration app.use(morgan('dev')); // log every request to the console app.use(cookieParser()); // read cookies (needed for auth) app.use(bodyParser.json()); // get information from html forms app.set('view engine', 'ejs'); // set up ejs for templating app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret app.use(passport.initialize()); app.use(passport.session()); // persistent login sessions app.use(flash()); // use connect-flash for flash messages stored in session require('./app/API/routes')(app, passport); //require('./app/API/general'); // START THE SERVER // ============================================================================= app.listen(port); console.log('Magic happens on port ' + port); //exports = module.exports = app; 

我用棘手的解决scheme解决了Cors问题。 首先创build像这样的要求“请求”npm刮的路线

 app.get('/scrape', function (req, res) { console.log("=============================Scrape =========================") var url = req.body.url; request(url, function(error, response, html){ if(!error){ res.send(html) } }); 

并在前台使用这样的

 $http.get("/scrape", { params: { "url": "http://localhost:8080/profile" } });