Angular 9 - stylescript - headers.set - không thêm tiêu đề

Oct 02 2020

Tôi cố gắng sử dụng một bộ phun góc để thêm mã thông báo mang

mặc dù mã được thực thi, tiêu đề không được thêm vào

có nhiều mã khác nhau ngoài đó, tôi đã thử một số mã, tất cả đều dẫn đến cùng một vấn đề

không người mang nào được gửi với yêu cầu

trong hình ảnh dưới đây, tôi đã dừng lại ở clone / headers.set , nhưng ngay cả sau bước đó, bản đồ tiêu đề vẫn trống

@Injectable()
export class JwtInterceptor implements HttpInterceptor {
  constructor(
    private appService: AppService
  ) { }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    // add auth header with jwt if user is logged in and request is to the api url
    let authentication: Authentication = this.appService.getUserSession();

    const isLoggedIn = authentication && authentication.token;
    const isApiUrl = request.url.startsWith(environment.apiUrl);

    //------------------------------------- add id's
    let body = request.body;
    if(!body)
    {
        body={};
    }
    body['clientId'] = environment.clientId;
    body['clientSecret'] = environment.clientSecret;

    request = request.clone({
        body: body
    });

    //--------------------------------------- add jwt

    if(authentication)
    {
        request = request.clone(
            {
                headers: request.headers.set('Bearer', authentication.token)
            }
        );
    }

    return next.handle(request);
  }
}

cảm ơn vì đã giúp tôi về vấn đề này

Trả lời

1 Adjunta Oct 02 2020 at 10:01

Theo nguyên mẫu phương thức clone (), bạn có một thuộc tính đối tượng để đặt tiêu đề (có tên setHeaders)

setHeaders?: {
            [name: string]: string | string[];
        };

Bạn nên làm như sau

 request = request.clone(
         {
            setHeaders: {
                Authorization: `Bearer ${authentication.token}`
            }
         }
    );