2016-10-07 15 views
-1

私はjwtトークンを使用して簡単な認証サービスを持っていますが、必要な場合は、確認承認ヘッダーと送信リクエストapiエンドポイントで角度2リクエストが最初のリクエストを送信するためにユーザーの詳細が必要です。私はAngular2 Http.get 2つのリクエストを送信

ネットワークオペレーションを説明しましょう http://pasteboard.co/c3wmFZvtJ.jpg

間違ったヘッダー http://pasteboard.co/c3wDdFxMy.jpg

正しいヘッダー http://pasteboard.co/1cKy9EHDy.jpg

マイHttp.Get機能

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 
    ); 
} 

私は

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 
        ) 
       ); 
      } 
     } 
} 

第二ヘッダートークン http://pasteboard.co/c3C6ed2k7.jpg

そしてNをエコーすることができますここでは、この関数を呼び出します私がプロダクトをビルドすれば問題が1つしか発生しません

答えて

2

最初のリクエストはCORSのために必要なOPTIONSリクエストです。

この場合、問題はありません。ブラウザは、APIを呼び出すことができるかどうか、また、必要なヘッダーが許可されているかどうかを事前に確認する必要があります。

ヘッダーAccess-Control-Request-Headersは、お客様の要求にauthorizationヘッダーを送信できるかどうかを確認します。

Access-Control-Request-Methodは、GETリクエストを送信できるかどうかを確認します。

プリフライト要求は、クライアントのドメインがapiのドメインと異なる場合にのみ発生します。

このlinkをご覧ください。

関連する問題