Angular 9 - typescript - headers.set - tidak menambahkan header

Oct 02 2020

Saya mencoba menggunakan injektor sudut untuk menambahkan token pembawa

meskipun kode tersebut dijalankan, header tidak ditambahkan

ada banyak kode berbeda di luar sana, saya mencoba beberapa di antaranya, semuanya mengarah ke masalah yang sama

tidak ada pembawa yang dikirim dengan permintaan tersebut

pada gambar di bawah ini saya berhenti di clone / headers.set , tetapi bahkan setelah langkah itu, peta header masih kosong

@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);
  }
}

terima kasih telah membantu saya dalam hal ini

Jawaban

1 Adjunta Oct 02 2020 at 10:01

Menurut prototipe metode clone (), Anda mendapat properti objek untuk menyetel header (bernama setHeaders)

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

Anda harus melakukan sebagai berikut

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