angularjs发帖表示4返回错误请求400



这是关于发布angularjs以表达4.0 的问题

我上了一门关于复数形式的课程。我从课程老师的github获得了源代码(https://github.com/joeeames/multivision-demo)。您可以在此处找到代码行: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;
},

现在,如果你按原样安装node/bower项目,你就可以正常工作了(在package.json中,你可以看到"express":"~3.4.4")。如果你将其更新到express 4.0,并提供express 4.0的要求,如分离体解析器、cookie解析器等。它将出现问题:如果你试图登录,上面的行将生成错误(从Angularjs到Passport.authenticate()的400个错误请求)。升级到express 4.0后,我的护照LocalStrategy将永远不会被调用。不幸的是,我没有足够的知识来使用wireshark或其他工具在发布之间检查http的细节,希望能找到它。有人能给我一个想法吗?升级到express 4.0后,如何让它工作?

单靠这一点无济于事。您需要为主体解析器指定Content-Type

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

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

我知道这是一个老问题,但我想我会发布一个回复,因为我遇到了类似的问题。我升级了一个RESTapi来表达4,然后我的Angular接口就不会发布到它了。问题不在于Angular,而在于post数据的解析。Angular默认将数据发布为JSON,因此我需要添加以下内容,以确保我的express应用程序能够解析JSON。

app.use(bodyParser.json());

最新更新