Angular2 HTTP请求不附加标头

时间:2017-05-03 15:59:23

标签: angular http

在我的应用程序中,我正在尝试向我的API发送快速测试请求以测试我的身份验证。单击一个按钮时,将调用此函数,该函数将创建一个Authorization标头并发出HTTP请求:

  public test() {
    const headers: Headers = new Headers();
    headers.append('Authorization', 'Bearer ' + this.auth.token);
    this.http.get('http://localhost:62940/api/ping/secure', { headers: headers }).subscribe(x => {
      console.log(x);
    });
  }

但是,当我正在调试(或使用Fiddler分析流量)时,headers具有我创建的标头,但没有任何内容附加到Http请求。

2 个答案:

答案 0 :(得分:0)

您必须使用RequestOptions并将标题附加到。

let headers = new Headers();

headers.append('Authorization', 'Bearer ' + this.auth.token);
let options = new RequestOptions({headers: headers});
this.http.get(URL, options).subscribe(x => {
     console.log(x);
});

答案 1 :(得分:0)

看看:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

如果您正在发出CORS请求,则需要使用HTTP请求添加“withCredentials:true”RequestOption。否则,将不会随请求添加授权标头。

public test() {
   const headers: Headers = new Headers();
   headers.append('Authorization', 'Bearer ' + this.auth.token);
   this.http.get('http://localhost:62940/api/ping/secure', {
      withCredentials: true,
      headers: headers
   }).subscribe(x => {
       console.log(x);
   });
}

您还需要通过在飞行前响应中添加“Acess-Control-Allow-Credentials = true”标头来确保您的服务器接受Authorization标头,尽管这与服务器不同。另外,请确保服务器上也启用了CORS。