在meanjs中启用cors rest api server

时间:2015-08-16 17:08:54

标签: angularjs rest cors meanjs

我正在创建一个基于Meanjs.org latest version (0.4.0)的api(服务器端),我设法只启动MEN部分并在http://localhost:3000/api中创建一个

作为前端部分,我在http://localhost:4000/

中创建了一个Angularjs

然后我使用(P)ackage (M)anager 2

运行这两个应用程序

我正在尝试使用$resource这样的

发送用户凭据来创建用户
angular.module('users').factory('AuthenticationResource', ['$resource',
    function($resource) {
        return $resource('http://localhost:3000/api/auth/signup', {}, {
            post: {
                method: 'POST'
            }
        });
    }
]);
...
//In my controller
$scope.signup = function() {
    AuthenticationResource.post($scope.credentials, function(response) {
        $scope.authentication.user = response;
        $state.go($state.previous.state.name || 'home', $state.previous.params);
    });
};

在我的服务器端express.js

'use strict';

var config         = require('../config'),
    express        = require('express'),
    ...
    cors           = require('cors');

...
module.exports.initModulesServerRoutes = function(app) {
    // Globbing routing files
    config.files.server.routes.forEach(function(routePath) {
        require(path.resolve(routePath))(app);
    });
};
module.exports.initCorsOption = function(app){
    app.options('*', cors());
};

module.exports.init = function(db) {
    // Initialize express app
    var app = express();

    ...
    // Initialise Cors options
    this.initCorsOption(app);
    // Initialize modules server routes
    this.initModulesServerRoutes(app);
    ...
    return app;
};

我正在使用node cors package启用角色,只需执行app.options('*', cors());即可全面启用飞行前

但是当我尝试POSThttp://localhost:3000/api/auth/signup时,我可以看到我的用户被保存到数据库就好了,但它没有给我任何响应和chrome控制台给我这个

  

XMLHttpRequest无法加载http://localhost:3000/api/auth/signup。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:4000'因此不允许访问。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我认为您在所有路线之前缺少app.use:

只表达:

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");
  next();
});

如果你正在使用npm cors:

app.use(cors());