Angular 2 http.get 未在 header 中发送令牌
Angular 2 http.get is not sending the token in the header
我有一个 post 方法正在运行并从服务器获取我的令牌
authenticate() {
let url = this.server + 'authenticate';
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let body = JSON.stringify({
'password': 'admin',
'rememberMe': true,
'username': 'admin'
});
return this._http.post(url, body, options)
.map((res: Response) => res.json())
.subscribe(result => this.token = result.id_token);
}
其中 this.server
是具有服务器 url 的字符串。 this._http
只是 angular Http
的一个实例
private _http: Http;
constructor(http: Http) {
this._http = http;
}
和this.token
只是一个空字符串private token: string;
现在一切正常,我从服务器获得了正确的令牌。 我的问题是,当我尝试在 get 方法中使用此令牌时,它不起作用,并且出现 401(未经授权)错误。
我的 buggy 获取方法是:
getData(src) {
let url = this.server + src;
let headers = new Headers({'Authorization': 'Bearer ' + this.token});
return this._http.get(url, headers)
.map((res: Response) => res.json())
.subscribe(res => console.log('res'));
}
Http.get 接受一个 url 字符串和一个可选的 RequestOptionsArgs 作为参数。将 header 包装在 RequestOptions object 中应该可以解决问题。
getData(src) {
let url = this.server + src;
let headers = new Headers({'Authorization': 'Bearer ' + this.token});
let options = new RequestOptions({ headers: headers });
return this._http.get(url, options)
.map((res: Response) => res.json())
.subscribe(res => console.log('res'));
}
所以问题是我在发送它们时应该在 headers 周围添加 {}
。 get 应该是 this._http.get(url, { headers })
我有一个 post 方法正在运行并从服务器获取我的令牌
authenticate() {
let url = this.server + 'authenticate';
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let body = JSON.stringify({
'password': 'admin',
'rememberMe': true,
'username': 'admin'
});
return this._http.post(url, body, options)
.map((res: Response) => res.json())
.subscribe(result => this.token = result.id_token);
}
其中 this.server
是具有服务器 url 的字符串。 this._http
只是 angular Http
private _http: Http;
constructor(http: Http) {
this._http = http;
}
和this.token
只是一个空字符串private token: string;
现在一切正常,我从服务器获得了正确的令牌。 我的问题是,当我尝试在 get 方法中使用此令牌时,它不起作用,并且出现 401(未经授权)错误。
我的 buggy 获取方法是:
getData(src) {
let url = this.server + src;
let headers = new Headers({'Authorization': 'Bearer ' + this.token});
return this._http.get(url, headers)
.map((res: Response) => res.json())
.subscribe(res => console.log('res'));
}
Http.get 接受一个 url 字符串和一个可选的 RequestOptionsArgs 作为参数。将 header 包装在 RequestOptions object 中应该可以解决问题。
getData(src) {
let url = this.server + src;
let headers = new Headers({'Authorization': 'Bearer ' + this.token});
let options = new RequestOptions({ headers: headers });
return this._http.get(url, options)
.map((res: Response) => res.json())
.subscribe(res => console.log('res'));
}
所以问题是我在发送它们时应该在 headers 周围添加 {}
。 get 应该是 this._http.get(url, { headers })