2017-02-03 17 views
1

우리는 Angular 2 기반 웹 응용 프로그램을 사용하며 보안 REST-API에서 데이터를 검색합니다.각도 2에서 인증 리디렉션 처리

첫 번째 REST-API 요청시 GET 요청을 시작하기위한 리디렉션 (302) 응답이있는 URL을 반환합니다. 각도 2는 자동으로이 URL로 리디렉션되지 않으며 요청이 실패합니다. REST-API에 대한 로그인은 이미 중앙 집중식 인증 시스템을 사용하여 수행되었으며이 리디렉션은 로그인 페이지를 표시하고 사용자로부터 입력을받을 필요가 없습니다. GET 요청을 호출하기 만하면됩니다.

제공된 리디렉션 URL (HTTP : 302 응답에서 제공)에 대한 GET 요청을 어떻게 시작하고 데이터를 자동으로 검색 할 수 있습니까?

브라우저에서 REST-API 호출로 이동하면 자동으로 지정된 URL로 리디렉션되고 데이터가 반환됩니다.

REST-API 호출을

import { Injectable } from '@angular/core'; 
import { BehaviorSubject } from 'rxjs'; 
import { Response, Headers, RequestOptionsArgs, URLSearchParams, RequestOptions } from '@angular/http'; 

this.http.get(url, options) 
      .subscribe(
       (response: Response) => { 
       // handle response 
       }, 
       (error: any) => { 
       //handle error 
       } 
      ); 

브라우저 콘솔 오류를 시작하기위한

각도 소스

enter image description here

요청 및 나는 현재에 있지만,이 같은 문제에 직면하고있다 enter image description here

답변

0

응답 다른 이유. 다중 마이크로 서비스가 있고 각도 프론트 엔드가 해당 라우터에 대해서 알 필요가 있도록 라우터를 사용하고 있습니다. 각도 프론트 엔드가 특정 마이크로 서비스를 필요로 할 때, 이제 라우터를 호출하여 올바른 마이크로 서비스로 리다이렉트를 리턴합니다. 이것의 이점은 프론트 엔드가 오직 하나의 마이크로 서비스에 대해서 알 필요가 있고, 다른 마이크로 서비스를 자유롭게 추가, 제거, 이름 바꾸기 등을 할 수 있다는 것입니다.

이것은 라우터의 마이크로 서비스가 거의 모든 것에 대해 307 개의 응답을 반환한다는 것을 의미합니다. 각도 측면에서 구현하는 방법은이 HTTP 상태 코드에 대한 응답을 테스트하는 것입니다. 내가 307 번을 얻으면 라우터 리다이렉트라는 것을 알고있다. 그런 다음 위치 헤더를 요청하고 해당 위치로 요청을 다시 보낼 수 있습니다.

리디렉션 HTTP 상태 코드에 대한 응답을 테스트하면 정확히 동일하게 작동합니다. 리디렉션 코드 중 하나가 표시되면 응답 헤더에서 위치를 가져 와서 해당 위치로 요청을 다시 보내십시오.