授权不记名令牌 Angular 6 不工作

Authorization bearer token Angular 6 not working

我是 Angular 的新手,我正在做一个项目。我需要为某些 API 呼叫设置不记名令牌。这是我试过的。

getData(){
this.apiService.get('Services/getall', true).subscribe((data) => {
    console.log("data" + data);
},error => {

return throwError(error);  
});
}

APIService.get 方法

/* Make get request to API*/
        get(url: string, authorized: boolean = false ) : Observable<any> {
        return this.http.get<any>(apiUrl + url, { headers: this.getHeaders(authorized) }).pipe(catchError(this.errorHandler));
    }

如果 API 需要不记名令牌

    /**
* set authorization headers
*/
getHeaders(authorized: boolean) {
    let userToken = localStorage.getItem('userToken');

    const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    if (authorized) {
        headers.append('Authorization', 'Bearer ' + userToken);
    }   
    return headers;

}

但这不起作用。我收到 401 错误。 API 在我尝试使用 Postman 时没有任何问题。

能不能帮我解决一下。

HttpHeaders.append 不会修改您现有的 Headers。相反,它 returns 添加了新条目的克隆。因此,您需要再次将其分配给 headers。

let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    if (authorized) {
        headers = headers.append('Authorization', 'Bearer ' + userToken);
    } 

此外,我想您不需要设置 json contentType。如果需要,Angular 会为您做。

您将来可能希望使用 HTTP Interceptor 来自动将承载添加到您的所有请求中