如何以角度读取 Http 响应标头



这是我的角度服务类代码。我已经在本课程中调用了 restful Web 服务,响应即将到来。响应标头具有 JWT Web 令牌我想读取响应标头并在此 authUser 服务函数中获取 JWT Web 令牌。怎么办?

import { Injectable } from '@angular/core';
import {ResponseBeanModule} from '../../module/responsebean/responsebean.module';
import { Http, Headers, Response } from '@angular/http';

@Injectable({
providedIn: 'root'
})
export class AuthenticationService {
constructor(private http: Http) { this._prepare()}
private userUrl = 'http://192.168.1.152:8080/api/user/';
endpointUrl: String;
responseBeanModule: ResponseBeanModule = new ResponseBeanModule();
options: any;
headers: any;
_prepare () {
this.endpointUrl = this.userUrl;
this.headers = new Headers();
this.headers.set('Content-Type', 'application/json');
this.options = {
headers: this.headers,
observe: 'body'
};
}

public authUser(loginBean): Promise<ResponseBeanModule> {
return new Promise((resolve, reject) => {
this.http.post(this.userUrl, loginBean, this.options).subscribe(
(data) => {
alert(JSON.stringify(data));
this.responseBeanModule = JSON.parse(data['_body'])
return resolve( this.responseBeanModule );
},
(err) => {
return reject(err);
}
);
});
}
}

要么这是 Angular 的 HttpClient 的一个损坏功能,要么他们从未打算让你阅读更多的标头,而不仅仅是Content-TypeContent-Length我只能使用 HTTP POST 或 HTTP GET 读取这些标头:

login(username = "", password = "") {
return this.httpClient
.post(`${environment.apiLocation}redfish/v1/SessionService/Sessions`,
{ username, password },
{observe: 'response'})
.pipe(
map(response => {
const keys = response.headers.keys();
let headers = keys.map(key =>
`${key}: ${response.headers.get(key)}`);
this.logger.log('response headers', headers);

最新更新