angularjs post表示4返回错误请求400

时间:2014-09-11 19:24:01

标签: node.js angularjs mongodb express

这是关于发布angularjs以表达4.0

的问题

我在MEAN堆栈上学习了关于复数的课程。我从课程老师(https://github.com/joeeames/multivision-demo)的github获得了源代码。 你可以在这里找到代码行: https://github.com/joeeames/multivision-demo/blob/master/public/app/account/mvAuth.js

 authenticateUser: function(username, password) {
  var dfd = $q.defer();
  $http.post('/login', {username:username, password:password}).then(function(response) {
    if(response.data.success) {
      var user = new mvUser();
      angular.extend(user, response.data.user);
      mvIdentity.currentUser = user;
      dfd.resolve(true);
    } else {
      dfd.resolve(false);
    }
  });
  return dfd.promise;
},

现在如果你节点/ bower按原样安装项目,你可以正常工作(在package.json中你看到“express”:“~3.4.4”)。如果你将它更新到Express 4.0并提供快速4.0的要求,比如分离了body-parser,cookie-parser等,那么就会出现问题:如果你尝试登录,上面的行会产生错误(400个错误请求,来自Angularjs到Passport.authenticate())。 升级到快递4.0后,我的护照的LocalStrategy永远不会被调用。不幸的是,我没有足够的知识来使用wireshark或其他工具之类的东西来检查发布之间的http的详细信息,希望能找到它。 有谁可以请一个想法,如何在升级到4.0之后让它工作?

2 个答案:

答案 0 :(得分:2)

仅凭这一点无济于事。您需要为正文解析器指定Content-Type

app.use(bodyParser.json({ type: 'application/*+json' }))

并确保客户端正在使用Content-Type,在您的情况下,这是正常的。

答案 1 :(得分:1)

我知道这是一个老问题,但我想我会发布回应,因为我碰到了类似的东西。我将REST api升级为表达4,然后我的Angular接口不会发布到它。问题不在于角度,而在于解析POST数据。 Angular默认将数据发布为JSON,因此我需要添加以下内容以确保我的Express应用程序可以解析JSON。

app.use(bodyParser.json());