Angular2 Http.get 发送两个请求
Angular2 Http.get Send two request
我有简单的身份验证服务,我使用 jwt 令牌,如果我需要用户详细信息来检查授权 header 并发送请求 api 端点但 angular 2 请求发送第一个请求Header 空键但第二个正确 header 让我解释一下
网络运营
http://pasteboard.co/c3wmFZvtJ.jpg
错误Header
http://pasteboard.co/c3wDdFxMy.jpg
正确Header
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
)
);
}
}
}
第二个Header可以回显Token
http://pasteboard.co/c3C6ed2k7.jpg
现在如果我构建产品项目发送一个请求,问题就只有开发模式了
看起来第一个请求是 OPTIONS
请求,因为 CORS
。
如果是这样,那也没什么不妥。浏览器需要事先请求检查您是否可以调用 api 以及您想要的 Headers 是否被允许。
header Access-Control-Request-Headers
检查您是否可以在您的请求中发送 authorization
header。
header Access-Control-Request-Method
检查您是否可以发送 GET
请求。
仅当客户端的域与 api 的域不同时才会发生预检请求。
看看这个link。
我有简单的身份验证服务,我使用 jwt 令牌,如果我需要用户详细信息来检查授权 header 并发送请求 api 端点但 angular 2 请求发送第一个请求Header 空键但第二个正确 header 让我解释一下
网络运营 http://pasteboard.co/c3wmFZvtJ.jpg
错误Header http://pasteboard.co/c3wDdFxMy.jpg
正确Header 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
)
);
}
}
}
第二个Header可以回显Token http://pasteboard.co/c3C6ed2k7.jpg
现在如果我构建产品项目发送一个请求,问题就只有开发模式了
看起来第一个请求是 OPTIONS
请求,因为 CORS
。
如果是这样,那也没什么不妥。浏览器需要事先请求检查您是否可以调用 api 以及您想要的 Headers 是否被允许。
header Access-Control-Request-Headers
检查您是否可以在您的请求中发送 authorization
header。
header Access-Control-Request-Method
检查您是否可以发送 GET
请求。
仅当客户端的域与 api 的域不同时才会发生预检请求。
看看这个link。