2016-10-07 4 views
-1

jwt 토큰을 사용하여 간단한 인증 서비스를 사용하고 나중에 승인 확인 헤더와 보내기 요청 api 끝점은 있지만 각도 2 요청은 첫 번째 요청 보내기 헤더가 비어 있지만 두 번째 올바른 헤더 나를Angular2 Http.get 두 요청 보내기

네트워크 운영을 설명 할 수 http://pasteboard.co/c3wmFZvtJ.jpg

잘못된 헤더 http://pasteboard.co/c3wDdFxMy.jpg

올바른 헤더 http://pasteboard.co/1cKy9EHDy.jpg

내가 토큰 http://pasteboard.co/c3C6ed2k7.jpg

그리고 N 에코 수 있습니다 다음은이 기능

ngOnInit() { 
    this.userService.getUsers() 
     .subscribe(users => { 
      this.users = users; 
     }); 
} 

PHP는 사이드

public function Detay(){ 
    echo $this->headers["authorization"]; 
    if(!isset($this->headers["authorization"]) || empty($this->headers["authorization"])){ 
     echo json_encode(array("Hata" => "Header Yok")); 
    }else{ 
     $token = explode(" ", $this->headers["authorization"]); 
     $user = JWT::decode(trim($token[0],'"')); 
     $this->load->model("auth_model"); 
     if($this->auth_model->checkUser($user->id, $user->KullaniciAdi) !== false) 
      { 
       $this->load->model("user_model"); 
       $detay = $this->user_model->get($user->id, $user->KullaniciAdi); 
       echo json_encode(
        array( 
          "detay"=> $detay 
        ) 
       ); 
      } 
     } 
} 

두 번째 헤더를 호출

getUsers(): Observable<User[]> { 
    // Authorization Tokeni Ayarlanıyor 
    let headers = new Headers({ 'Authorization': this.authenticationService.token }); 
    let options = new RequestOptions({ headers: headers }); 
    // Kullanıcı Headeri Gönderiliyor 
    return this.http.get('http://localhost/Hesap/Detay', options) 
     .map((response: Response) => 
      response.json().detay 
    ); 
} 

16,

내 Http.Get 기능 문제는 내가 문제가되는 프로젝트를 구축 할 때 단 한 번의 요청 만 보내면

답변

2

첫 번째 요청은 CORS으로 인해 OPTIONS 요청이 필요합니다.

그렇다면 아무 문제가 없습니다. 브라우저는 귀하가 API를 호출 할 수 있는지 그리고 원하는 헤더가 허용되는지 여부를 확인하기위한 사전 요청을해야합니다.

헤더 Access-Control-Request-Headers은 요청에 authorization 헤더를 보낼 수 있는지 확인합니다.

Access-Control-Request-Method 헤더는 GET 요청을 보낼 수 있는지 확인합니다.

프리 플라이트 요청은 클라이언트의 도메인이 api의 도메인과 다른 경우에만 발생합니다.

이 부분을보세요. link