Angular2 Http.get Отправить два запроса
У меня есть простая служба аутентификации, я использую токен jwt, и после того, как мне понадобится информация о пользователе для проверки заголовка авторизации и отправки конечной точки API запроса, но угловой запрос 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 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
И теперь ЭТО ПРОБЛЕМА, ТОЛЬКО РЕЖИМ РАЗРАБОТКИ, если я создаю Prod Project, отправьте один запрос
1 ответ
Похоже, что первый запрос OPTIONS
запрос необходим из-за CORS
,
Если это так, то в этом нет ничего плохого. Браузер должен сделать предварительный запрос, чтобы проверить, можете ли вы вызвать API и разрешены ли требуемые заголовки.
Заголовок Access-Control-Request-Headers
проверяет, можете ли вы отправить authorization
Заголовок в вашем запросе.
Заголовок Access-Control-Request-Method
проверяет, можете ли вы отправить GET
запрос.
Предварительный запрос выполняется только в том случае, если домен клиента отличается от домена API.
Посмотрите на эту ссылку.