2016-06-30 3 views
1

각도로 로그인 페이지를 만듭니다. 로그인 API 호출 (POST) 후, 응답으로 토큰을받습니다. 컨트롤러에서 나는 모든 추가 API 호출에 권한 부여를 위해 사용할 수 있도록 "일반적인"헤더에이 토큰을 설정하려고 :API 응답의 헤더에 토큰 설정

LoginSrv.authenticate($scope.credentials).then(
     function(data){ 
      $http.defaults.headers.common.Authorization = data.token; 
      $state.go('nextpage'); 
     } 
); 

후 API 호출을 다시이 다음 페이지로 이동합니다. 이 호출 후에 디버거에서 요청 헤더를 확인할 때 헤더에 해당 토큰이 표시됩니다. 이 응답은 다시 세 번째 페이지로 이동합니다 (이번에는 머리글을 다시 설정하지 않습니다). 세 번째 페이지에서 API (GET 또는 POST)를 호출하면 이번에는 헤더에서 '인증'을 사용할 수 없습니다. 이것이 어떻게 제거되는지는 잘 모르겠습니다.

+0

두 번째 API 호출과 세 번째 API 호출을 할 때 컨트롤러 코드를 공유 할 수 있습니까? – ExoticChimp

+0

이것에 대해 자세히 조사했습니다. 그것은 서버 측 문제로 보인다. – Gaurav

+0

세 번째 API 호출이 비행 전 OPTION에서 중지되었으므로 헤더가 표시되지 않습니다. OPTION에 401 권한 부여 오류가 발생합니다. – Gaurav

답변

1

세 번째 요청이 상호 도메인 인 경우 서버가 요청을 보내기 전에 사용할 수있는 방법 등을 확인하기위한 프리 플라이트 브라우저 OPTIONS 요청에 올바르게 응답하지 않는 것으로 보입니다. Angular 문제가 아닙니다. 한 가지 해결책은이 OPTIONS 요청에 올바르게 응답하도록 서버를 구성하는 것입니다. 이 SO 링크 (이전의 설명에서 제공)는 잠정적 인 솔루션에 대해 좀 더 자세히 설명하고 토론합니다. AngularJS performs an OPTIONS HTTP request for a cross-origin resource

관련 문제