Как удалить заголовок для данного имени в угловых? - PullRequest
0 голосов
/ 03 апреля 2019

В моем приложении я делаю несколько HTTP-запросов.Всем им нужен заголовок аутентификации с токеном доступа (и некоторыми другими значениями заголовка).Я определил в переменной заголовка типа HttpHeaders (см. Код # 1), чтобы использовать ее как this.http.get(this.myUrl, { headers: this.headers}).
В моем случае токен должен обновляться со временем, и я хочу изменить заголовок, чтобы он содержалновейший токен.

В моем коде есть функция обновления, которая должна обновлять токен и заменять старый токен в заголовке HTTP на новый.
Мой первый подход заключался в использовании предоставленного set () метод (см. код # 2).Это добавило новое значение в заголовок и не заменило его (теперь у меня было два варианта авторизации).
Мой второй подход состоял в том, чтобы использовать delete () метод (см. Код # 3) иудалите Authorization, а затем используйте метод append () и новый метод.Это привело к аналогичному результату.
Мой последний подход состоял в том, чтобы просто использовать метод delete () (см. Код # 4).

образцы кода

код # 1:

headers = new HttpHeaders()
  .set('Content-Type', 'application/json')
  .set('Accept', 'application/json');

код # 2:

this.headers = this.headers
  .set('Authorization', 'Bearer ' + access_token);

код # 3:

this.headers = this.headers.delete('Authorization');
this.headers = this.headers.append('Authorization','Bearer ' + access_token);

код # 4:

this.headers = this.headers.delete('Authorization','Bearer ' + access_token);

результаты

Я ожидал, что либо значение заголовка ({'Authorization', 'Bearer ' + access_token}) будет заменено (1-й подход).Фактический результат состоял в том, что он только что был добавлен:

{"Authorization", "Bearer access_token-old"}
{"Authorization", "Bearer access_token-new"}

И для второго подхода я ожидал удалить и добавить новое значение, которое привело к добавлению еще двух значений:

{"Authorization", undefined}
{"Authorization", "Bearer access_token-new"}

Мой последний подход привел к тому же результату, что и в моем первом подходе, вместо простой замены значения.
Знаете ли вы какой-либо метод, чтобы просто заменить access_token / значение в {'Authorization','Bearer ' + access_token}?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Мне удалось найти простой обходной путь, подходящий для моего случая:

  1. Я определяю заголовок:
headers = new HttpHeaders()
  .set('Content-Type', 'application/json')
  .set('Accept', 'application/json');
Каждый раз, когда мне нужно обновить токен, я делаю это:
this.headers = new HttpHeaders()
  .set('Content-Type', 'application/json')
  .set('Accept', 'application/json')
  .set('Authorization', 'Bearer ' + access_token');

Но если у кого-нибудь есть идея, как это сделать с помощью set (), append (), delet () и т. Д., Я бы хотел это услышать.

0 голосов
/ 03 апреля 2019

Попробуйте это

let headers: HttpHeaders = new HttpHeaders();
headers = headers.set('Accept', 'application/json');
headers = headers.set('Accept', 'application/json');
headers = headers.set('Authorization', `Bearer ${access_token}`);
...