2

API를 소비하는 Angular를 사용하여 간단한 응용 프로그램을 만들려고합니다. VM을 사용하여 코드를 실행하고 내 컴퓨터에서 액세스하므로 컴퓨터에서 API를 호출하기 위해 cURL 또는 다른 HTTP 클라이언트를 사용할 수 있으며 모든 것이 작동합니다. 예 :

컬 -k --user [email protected] : 비밀번호 https://api.my.domain.com/v1/traveler/get

는 그리고 예를 들어 여행자의 목록을 반환합니다. 유효하지 않은 인증서를 "신뢰"해야합니다. 따라서 브라우저에서 처음에는 net::ERR_INSECURE_RESPONSE을 반환하므로 API URL로 이동하여 예외를 추가하고 이제는 더 이상이 문제가 발생하지 않습니다. 그런 다음 기본 인증을 추가해야만 제대로 작동하는 것 같습니다. http://www.toptal.com/angular-js/a-step-by-step-guide-to-your-first-angularjs-app

app.js :

angular.module('TravelerApp', [ 
    'TravelerApp.controllers', 
    'TravelerApp.services' 
]); 

services.js : 내가 외부 API를 소비하는이 튜토리얼 다음 야의 내 코드 무엇인지 보자 당신은 아무것도 잘못보고 있으면 알려 주시기 바랍니다

을 마지막으로
angular.module('TravelerApp.services', []) 
.factory('TravelerAPIService', function($http) { 
    var travelerAPI = {}; 

    $http.defaults.headers.common.Authorization = 'Basic ABC743HFEd...='; 

    travelerAPI.getTravelers = function() { 
     return $http({ 
      method: 'GET', 
      url: 'https://api.my.domain.com/v1/traveler/get' 
     }); 
    } 

    return travelerAPI; 
}); 

의 controllers.js :

angular.module('TravelerApp.controllers', []) 
.controller('travelersController', function($scope, TravelerAPIService) { 
    $scope.travelersList = []; 

    TravelerAPIService.getTravelers() 
    .success(function(data) { 
     console.log('SUCCESS'); 
     $scope.travelersList = data; 
    }) 
    .error(function(data, status) { 
     console.log('ERROR'); 
     $scope.data = data || "Request failed"; 
     $scope.status = status; 
    }); 
}); 

오류 상태 코드 0이고 오류 데이터는 빈 문자열입니다.

+0

나는 HTTP 서버를 죽이고 요청할 때 비슷한 결과를 얻는다. 아마 관련 : http://stackoverflow.com/questions/2000609/jquery-ajax-status-code-0 –

답변

4

정밀도 :

HTTP POST 쿼리에서 동일한 문제가 발생합니다. 나는 확신 : 나는 때문에

:

  • 없는 요청은 쿼리를 전송하지 않습니다이 각도의

그리고 마침내 내가 답을 찾을 서버에서 이루어졌다 (그리고 아마도 당신) 자신이 서명 한 httpS 서버를 보내고있다. 크롬은 안전하다고 표시하지 않습니다.

브라우저에 주소를 입력하고 수동으로 인증서를 수락하여이 문제를 해결했습니다.

은 아마 관련 : XMLHttpRequest to a HTTPS URL with a self-signed certificate

1

내가 SSL 인증서 서명 신뢰할 수있는 CA를 사용하는 것이 좋습니다 것보다는 자체 서명 인증서 대부분의 브라우저 등 구글 크롬, 파이어 폭스, 같은 자체 서명 인증서를 승인하지 않는 한 문제를 해결할 것 .