Ошибка 500 POST с Ionic и AngularJS

У меня проблема с попыткой аутентификации в Ionic и AngularJ с Backend в Cakephp 3. При тестировании в Chrome Postman все работает отлично. Проблема при звонке с ионного контроллера. Ниже я представляю все рассматриваемые элементы:

// controllers.js
.controller('AuthCtrl', function($scope, $location, $stateParams, $ionicHistory, $http, $state, $auth, $rootScope) {

  $scope.loginData = {};
  $scope.loginError = false;
  $scope.loginErrorText;

  $scope.doLogin = function() {

    var credentials = {
      username: $scope.loginData.username,
      password: $scope.loginData.password
    }
    var header = {
      'Content-Type' : 'application/json',
      'Accept' : 'application/json'
    }

    $auth.login(credentials).then(function() {

      $http.post('http://fullday-backend/api/users/token', header).success(function(response) {

        var user = JSON.stringify(response.user);

        localStorage.setItem('user', user);

        $rootScope.currentUser = response.user;

        $ionicHistory.nextViewOptions({
          disableBack: true
        });

        $state.go('app.coupons');
      }).error(function() {
            $scope.loginError = true;
            $scope.loginErrorText = error.data.error;
            console.log($scope.loginErrorText);
            console.log("error");
      })
    });
  }
})

// App.js

.config(function($stateProvider, $urlRouterProvider, $authProvider) {

$authProvider.loginUrl = 'http://fullday-backend/api/users/token';

$stateProvider

.state('app.auth', {
  url: '/auth',
  views: {
    'menuContent': {
      templateUrl: 'templates/login.html',
      controller: 'AuthCtrl'
    }
  }
})

.state('app', {
  url: '/app',
  abstract: true,
  templateUrl: 'templates/menu.html',
  controller: 'AppCtrl'
})

.state('app.search', {
  url: '/search',
  views: {
    'menuContent': {
      templateUrl: 'templates/search.html'
    }
  }
})

.state('app.browse', {
    url: '/browse',
    views: {
      'menuContent': {
        templateUrl: 'templates/browse.html'
      }
    }
  })
  .state('app.coupons', {
    url: '/coupons',
    views: {
      'menuContent': {
        templateUrl: 'templates/coupons.html',
        controller: 'couponsCtrl'
      }
    }
  })

.state('app.single', {
  url: '/coupons/:couponId',
  views: {
    'menuContent': {
      templateUrl: 'templates/coupon.html',
      controller: 'couponCtrl'
    }
  }
});
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/app/coupons');
});

PS: Важно отметить, что при отправке неверных пользовательских данных и пароля вы отклоняете соединение с кодом 401 правильно.

introducir la descripción de la imagen aquí

0
задан 15.11.2016, 17:58
2 ответа

Попробуй звонить так, success и error уже устаревшие

$http({
    method: 'POST',
    url: 'http://fullday-backend/api/users/token',
    dataType: "json",
    headers : {
      'Content-Type' : 'application/json',
      'Accept' : 'application/json'
    }

}).then(function(response) {

});

Ошибка 500 - стороны сервера, как ты говоришь, что, когда ты посылаешь плохие данные от app в твой сервер, ты получаешь правильную ошибку (поэтому я отказываюсь от проблемы CORS), ошибку, которая вызывает 500, он должен быть происходя, когда ты посылаешь правильные данные.

0
ответ дан 24.11.2019, 12:36
  • 1
    Превосходный ответ. Решенный неудобный коллега! +1 – Jean Manzo 15.11.2016, 19:22
  • 2
    @JeanManzo привет! Я радуюсь, что был решен, помни что пометь как правильная ответ! – sioesi 15.11.2016, 19:28

ты используешь плохо $http.post

$http.post(url, data, [config]);
  • Первый parГЎmetro ожидается, что это был унифицированный указатель ресурса
  • , Второй parГЎmetro ожидается, что это был данные, которые были должны посылать
  • , trcer parГЎmetro ждет, что это была конфигурация AJAX

//

С этим info, доказательство делать это asГ-:

$http.post('http://fullday-backend/api/users/token', null, {
  dataType: 'json'// Sirve para setear accepts y content-type
})
.then(function(response) {
  // Codigo aqui
});
0
ответ дан 24.11.2019, 12:36
  • 1
    esta работая с angularjs, $http.post хорошо, хотя устаревший – sioesi 15.11.2016, 18:09

Теги

Похожие вопросы