2017-05-13 5 views
1

angularjs에 Cors가 필요합니다. 다른 사람의 API를 사용하고 있기 때문에 webapi에 cors를 사용하지 않습니다. 이 난 단지 내가 그것을 잘 작동 POSTMAN를 사용하여 시도했다 , AngularJS와를 사용하여 기본 인증 데이터를 얻으려고 노력하지만 난 많이 시도했지만 그것은 다음과 같이 오류를 보여주는이 작동하지 않습니다 내 AngularJS와 응용 프로그램을 사용하고 있습니다 :AngularJS 호출은 POSTMAN에서 작동하지만 AngularJS 응용 프로그램에서는 작동하지 않습니다. - 프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 않습니다.

리소스를로드하지 못했습니다. 서버가 401 (승인되지 않음) index.html : 1의 상태로 응답했습니다. XMLHttpRequest가 012를로드 할 수 없습니다.https://api.url/token. 프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 못합니다. '액세스 제어 허용 허용 원천'헤더는 요청 된 리소스에 입니다. 원점 'http://localhost:63122'은 이므로 액세스가 허용되지 않습니다. 응답은 내가 아래 샘플 코드로 시도했다 (401)

HTTP 상태 코드를 가지고 :

var myApp = angular.module("myApp", ['ngCookies']); 
myApp.config(['$httpProvider', function ($httpProvider) { 

    $httpProvider.defaults.useXDomain = true; 
    $httpProvider.defaults.withCredentials = true; 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 
} 

]); 
myApp.controller("GetDataController", ["$scope", "$http", function ($scope, $http) { 
    $scope.GetToken = function() { 
     debugger; 
     var appdata = $.param({ 
      grant_type: 'credentials', 
      scope: 'Customer', 
     }); 

     $http({ 
      async: true, 
      crossDomain: true, 
      method: 'GET', 
      url: 'https://api.url.net/token', 
      data: appdata, 
      headers: { 

       "username": "847fd9f9fg9h7h66jl8ljdggff", 
       "password": "302kfsg7fhhjh0dgjngfdjd", 
       "Authorization": "Basic Mufdnfaffa8439flg8g" 

      } 
     }).then(function (response) { 
      debugger; 
      $scope.displaymessage = response.data; 

     }, function errorCallback(response) { 
      $scope.displaymessage = response; 
      console.log(response) 
     }); 
    }; 

}]) 

내 응용 프로그램에서 작동하지 않는 이유는 우편 배달에서 일하고 나는 변화를해야하는 위치 ..

답변

1

CORS 크로스 도메인 요청의 경우에는 CORS가 제공됩니다. 하나의 도메인에서 다른 도메인으로 요청이 전송 될 때의 의미. Postman에서

통화에서 전송되지 않은 domain (Postman이 할당 일부 도메인과 호스팅되는 '독립형'응용 프로그램이 아닌 웹 사이트처럼되어 있기 때문). 따라서 CORS는이 경우 그림에 포함되지 않습니다. 이것은 더 잘 설명됩니다 here.

그러나 Angular JS 앱은 일부 도메인에서 호스팅되어야합니다. 예 : localhost 또는 myexample.com. 따라서 앱에서 동일한 전화가 걸려 오면 CORS가 필요합니다.

CORS는 앱이 아니라 서버에 구현되어야합니다. 서버는 특정 도메인 또는 모든 도메인의 호출을 수락하도록 구성되어야합니다. 웹 API 소유자에게 CORS를 구현하도록 요청해야합니다.