2016-10-07 2 views
-1

У меня есть простая служба аутентификации im с использованием токена jwt, и после этого, если вам не нужна подробная информация о пользователе для проверки заголовка авторизации и отправки запроса api конечная точка, но угловой запрос 2 отправить первый запрос Header empty key, но второй правильный заголовок позвольте мне объяснитьAngular2 Http.get Отправить два запроса

Операции сетевого 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 Side

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 если вы строите проект prod, отправьте один запрос

ответ

2

Похоже, что первым запросом является запрос OPTIONS из-за CORS.

Если это так, в этом нет ничего плохого. Браузеру необходимо сделать предварительный запрос, чтобы проверить, можно ли вызывать api, и если заголовки, которые вы хотите, разрешены.

Заголовок Access-Control-Request-Headers проверяет, можете ли вы отправить заголовок authorization в свой запрос.

Заголовок Access-Control-Request-Method проверяет, можете ли вы отправить запрос GET.

Запрос предполетной проверки происходит только в том случае, если домен клиента отличается от домена api.

Посмотрите на это link.