如何解决为什么“承载”一词从我的 HTTP 授权标头中删除
我正在使用 okta-angular
包在现有的 Angular 6 应用程序中实现 OAuth2。我遇到了一个问题,即“承载”一词从任何 HTTP 调用中的授权请求标头中删除或未到达授权请求标头。这导致 401 未授权。任何有关为什么会发生这种情况的见解以及如何纠正它的方向?
base.service.ts getHeaders()
方法负责为应用中的所有 HTTP 调用生成标头,并在身份验证令牌前包含“Bearer”一词。
protected async getHeaders(): Promise<boolean> {
if (await this.oktaService.isAuthenticated()) {
this.headers = new HttpHeaders({ Authorization: `Bearer ${this.oktaService.getAccesstoken()}`,'Content-Type': 'application/json','Accept': 'application/json','Cache-Control': 'no-cache' });
return true;
}
return false;
}
base.service.ts get()
方法使用 this.headers
public async get(methodRoute: string,param?: string): Promise<Observable<ResponseDTO<T>>> {
if (await this.getHeaders()) {
let fullUrl = `${this.entityUrl + methodRoute}`;
if (param !== undefined && param !== null && param.length > 0) {
fullUrl += '/' + param;
}
return this.http.get<ResponseDTO<T>>(fullUrl,{ headers: this.headers });
}
return null;
}
nav-menu.component.ts 使用 baseService 的 get()
方法
async load() {
if (this.isAuthenticated) {
(await this.baseService.get('url/goes/here'))
.subscribe((response: ResponseDTO<boolean>) => {
this.isSup.next(response.responSEObject);
});
(await this.baseService.get('url/goes/here'))
.subscribe((response: ResponseDTO<boolean>) => {
this.isKSup.next(response.responSEObject);
})
}
}
运行代码我可以观察到 this.headers
并看到完整的“Bearer {token here}”,明确地保留了 Bearer 一词。在 F12 Developer Tool 的控制台中,HTTP 请求返回 401 Unauthorized 错误。通过开发工具(Chrome 和 Edge)查看请求标头,我发现授权标头中缺少“承载”一词,但存在令牌。
Screenshot of Authorization header
package.json 中的相关项目
"@angular/cdk": "^6.4.7","@angular/common": "^6.1.10","@angular/compiler": "^6.1.10","@angular/core": "^6.1.10","@angular/forms": "^6.1.10","@angular/http": "^6.1.10","@okta/okta-angular": "^3.1.0","@okta/okta-auth-js": "^5.0.2","node-sass": "^4.14.1","rxjs": "^6.6.3",
我尝试降级到 6.1.7,它匹配一个不同的项目,该项目正确地将“Bearer”传递给请求标头。没有骰子。我尝试重构 load()
方法以首先获取标头并内联使用它们,类似于 get() 方法,但这也不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。