angular - 如何以角度读取 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-Type
and Content-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);
推荐阅读
- python - pandas value_counts(显示值和比率)
- javascript - 如何在javascript中以螺旋模式生成数字对?
- mysql - 使用 Nodejs 在 MySQL 中批量插入仅插入一行
- r - 基于公共列(唯一)-R 将一个数据框的列与其他列进行比较
- javascript - 更新:如何将默认值传递给我的模态输入元素
- typescript - 使 tsconfig 引用所有导出的变量(用于测试 mock/spy/stub)
- bash - SoX:.wav 输入文件上的过早 EOF
- arrays - 创建包含多个变量的 JSON 数组
- postgresql - 在postgres中将十六进制转换为时间戳
- python - 意外函数返回不同类型/仅数字检查器