【发布时间】:2018-02-26 08:45:47
【问题描述】:
任何想法如何将标题添加到下面显示的函数中?我创建了登录服务,并获得了响应状态 200。但是,当我尝试发送 GET 请求时,我得到Failed to load resource: the server responded with a status of 403 (Forbidden).
func() {
return this.http.get('/data', )
.map(response => response.json())
.subscribe(response2 => this.response2 = response2);
}
我的 GET:
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
return super.get(appConfig.apiUrl + url, this.addJwt(options)).catch(this.handleError);
}
private addJwt(options?: RequestOptionsArgs): RequestOptionsArgs {
// ensure request options and headers are not null
options = options || new RequestOptions();
options.headers = options.headers || new Headers();
// add authorization header with jwt token
let currentUser = JSON.parse(localStorage.getItem('currentUser'));
if (currentUser && currentUser.token) {
options.headers.append('Authorization', 'Bearer ' + currentUser.token);
}
return options;
}
解决方案
问题是后端希望令牌以Token 132083128901302 的形式发送,但我发送的是Bearer 132083128901302。将 Bearer 更改为 Token 后一切正常。
【问题讨论】:
-
看起来您已经在注释
// add authorization header with jwt token的位置添加了标题。您认为缺少哪个标头? -
仅供参考,
.subscribe()绝对是错误的。.catch(this.handleError);更糟糕,直接来自 Angular 官方指南(必须是.catch(e => this.handleError(e));)。 Angular 官方指南的道德是完全可怕的。沃德·贝尔,你真丢脸。 -
即使从
.subscribe()更改为.subscribe(response2 => this.response2 = response2);,代码仍然是错误的,因为您不想从LoginService中的服务调用返回订阅,而只是返回Observable。除非你在一个不好的组件中直接使用Http -
我创建这个函数只是为了测试是否正确添加了标题
标签: angular rest typescript token