Bearer Token работает на почтальоне, но не на локальном хосте

Я пытаюсь сделать запрос в Angular с авторизацией с токеном на предъявителя. Если я делаю запрос в Postman, он работает. Но если я делаю это из Angular, это дает мне ошибку http 401 Unauthorized.

Я уверен, что localstorage.getItem('auth_token') возвращает правильный токен, потому что я зарегистрировал его перед проверкой.

const httpOptions = {
  headers: new HttpHeaders(
    { 'Content-Type': 'application/json' ,
    Authorization: 'Bearer '+ localStorage.getItem('auth_token')})
  };

Это запрос, который я пытаюсь сделать, который работает на почтальоне:

 getProducts(): Observable<string[]> {
    console.log(localStorage.getItem('auth_token'));
    return this.http.get<string[]>(this.productsURL)
      .pipe(
        tap(_ => this.log('fetched products')),
        catchError(this.handleError('getProducts', []))
      );
  }

person shiqo    schedule 04.01.2019    source источник
comment
Покажите нам остальную часть кода? Из этого примера вы сказали, что .getItem наверняка возвращает правильный результат, и все, так что из вашего лагеря это выглядит нормально. Также может показаться, что вы используете Anular, а не AngularJS, поскольку объект HttpHeaders живет в Angular.   -  person Adrian    schedule 04.01.2019
comment
Ошибки в консоли? Может быть, куда вы звоните?   -  person Adrian    schedule 04.01.2019
comment
Я добавил код запроса.   -  person shiqo    schedule 04.01.2019
comment
Спасибо, смотрите ниже.   -  person Adrian    schedule 04.01.2019
comment
Привет, @FranciscoBarril, это не angularjs, пожалуйста, удали этот тег. Этот тег зарезервирован для Angular v1, для всего вышеперечисленного мы используем тег angular. Если вы хотите узнать больше о тегах, просто щелкните один из них и посмотрите описание.   -  person Michael Czechowski    schedule 04.01.2019


Ответы (1)


Ваша проблема в том, что вы не используете созданные заголовки.

Ваш код должен выглядеть так:

return this.http.get<string[]>(this.productsURL, httpOptions)
.pipe(
   tap(_ => this.log('fetched products')),
   catchError(this.handleError('getProducts', []))
);

Обратите внимание на конструктор .get — помимо передачи URL-адреса, он также передает объект httpOptions, в котором вы создали токен носителя.

person Adrian    schedule 04.01.2019
comment
@FranciscoBarril Удовольствие принадлежит мне. - person Adrian; 04.01.2019