我有一个问题,JWT令牌只在特定的API上才被添加到头中,我不知道为什么.. The content of httpOptions.headers is different in each function as you can see in the screenshots below.个
My bookmarks service个
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { environment } from 'src/environments/environment';
import { UserAuthService } from '../user-auth/user-auth.service';
import { Bookmark } from 'src/app/models/api/bookmarks/Bookmark';
let httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
}),
};
@Injectable({
providedIn: 'root',
})
export class BookmarksService {
jwtToken: string | null = this.userAuthService.getJwtToken();
private apiUrl: string = environment.apiUrl;
constructor(
private http: HttpClient,
private userAuthService: UserAuthService
) {}
// Get bookmarks
getBookmarks(): Observable<Bookmark> {
this.addJwtToHeaders();
const url: string = `${this.apiUrl}/bookmark/`;
return this.http.get<Bookmark>(url, httpOptions);
}
addToBookmark(id: string): Observable<any> {
this.addJwtToHeaders();
console.log(httpOptions.headers);
const url: string = `${this.apiUrl}/bookmark_add/${id}/`;
return this.http.post<any>(url, httpOptions);
}
addJwtToHeaders(): void {
const auth = httpOptions.headers.get('Authorization');
if (!auth) {
if (!this.jwtToken) return;
httpOptions.headers = httpOptions.headers.append(
'Authorization',
`Token ${this.jwtToken}`
);
}
}
}
所以函数getBookmarks()可以工作,但是函数addToBookmark()不能.
addToBookmark() - error 401 Unauthorized