Javascript 使用Hapi.js和Angularjs登录

Javascript 使用Hapi.js和Angularjs登录,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,让我看看我能不能得到这个 我在后端/hapijs/node端有这个 server.route({ method: 'POST', path: '/login', handler: function(request, reply) { USER: request.payload.user, PWD: request.payload.password, PLANTA: request.payload.planta, PLANGROUP: request.p

让我看看我能不能得到这个

我在后端/hapijs/node端有这个

server.route({
  method: 'POST',
  path: '/login',
  handler: function(request, reply) {
    USER: request.payload.user,
    PWD: request.payload.password,
    PLANTA: request.payload.planta,
    PLANGROUP: request.payload.plantgroup,
    START_DATE: request.payload.startDate
  }
});
这里是前端

  .factory('LoginService', function($http, $q) {

    var defer = $q.defer();

    return {
      login: function(params) {
        $http.post('http://localhost:8000/login', {
          user: 'USRCP_HW',
          password: 'usrcp2012',
          planta: '6000',
          plantroup: 'E10',
          startDate: '2014-11-26'
        }).success(function(data) {
          console.log(data);
        }).error(function(data, status){
          console.log(data, status);
          defer.reject(data);
        });
        return defer.promise;
      }
    }

  });
还有控制器,我很困惑

  .controller('LoginCtrl', function($rootScope, $scope, $stateParams, LoginService) {

    $scope.login = function() {
      LoginService.login($scope.params).then(function(params) {
        console.log('credentials', $scope.params, params);
      })
    };   
  });
我在控制台中发现两个错误:

选项501(不支持的方法(“选项”))

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”。响应的HTTP状态代码为501


那么,我在这里遗漏了什么呢?

嗯,您的hapi路由是无效的JavaScript,所以我不确定它将如何运行。您正在使用request.payload正确获取有效负载值。您需要将其更改为以下内容:

server.route({
 method: 'POST',
  path: '/login',
  handler: function(request, reply) {
    var user = {
         USER: request.payload.user,
         PWD: request.payload.password,
         PLANTA: request.payload.planta,
         PLANGROUP: request.payload.plantgroup,
         START_DATE: request.payload.startDate
    };
    // do something with user object here
});
选项方法问题是因为Angular正在尝试执行CORS。只需将POST路径设置为相对路径,它就可以正确解析到您的服务器

$http.post('/login', {
  user: 'USRCP_HW',
  password: 'usrcp2012',
  planta: '6000',
  plantroup: 'E10',
  startDate: '2014-11-26'
})
您需要让您的hapi服务器也为这些有角度的内容提供服务,而不是从您的文件系统打开它


希望这有帮助

嗯,您的hapi路由是无效的JavaScript,所以我不确定它将如何运行。您正在使用request.payload正确获取有效负载值。您需要将其更改为以下内容:

server.route({
 method: 'POST',
  path: '/login',
  handler: function(request, reply) {
    var user = {
         USER: request.payload.user,
         PWD: request.payload.password,
         PLANTA: request.payload.planta,
         PLANGROUP: request.payload.plantgroup,
         START_DATE: request.payload.startDate
    };
    // do something with user object here
});
选项方法问题是因为Angular正在尝试执行CORS。只需将POST路径设置为相对路径,它就可以正确解析到您的服务器

$http.post('/login', {
  user: 'USRCP_HW',
  password: 'usrcp2012',
  planta: '6000',
  plantroup: 'E10',
  startDate: '2014-11-26'
})
您需要让您的hapi服务器也为这些有角度的内容提供服务,而不是从您的文件系统打开它

希望这有帮助