HttpHeader отправлен неправильно

Я кодирую в соответствии с этим руководством: https://angular.io/guide/http#configuring-other-parts-of-the-request.

Мой код следующий:

loadMenuOptions(): void {
    console.log('this.currentApiKey |' + this.currentApiKey);
     let header = new HttpHeaders();
    header = header.set('api-key', this.currentApiKey);

    this.commonService. getMenuOptions(MENU_OPTIONS, header).subscribe(respuesta => this.setMenuOptions(respuesta));
  }

Следующий код — это когда я отправляю этот объект на сервер:

getMenuOptions(endPoint: string, header: HttpHeaders): Observable<OptionsResponse> {
    console.log('header:' + JSON.stringify(header));
    return this.http.get<OptionsResponse>(endPoint,  header)
      .pipe(
        tap(res => this.log('getMenuOptions | status | ' + res.header.status)),
        catchError(this.handleError('getMenuOptions', null)));
  }

JSON.stringify показывает это значение:
header:{"normalizedNames":[],"lazyUpdate":[{"name":"api-key","value":"JEFE_HHHABBBJJJXXX" ,"op":"s"}],"headers":[],"lazyInit":{"normalizedNames":[],"lazyUpdate":null,"headers":[]}}

но сервер не получает значение «api-key».

Я выполнил POSTMAN с тем же значением, и сервер правильно получил значение «api-key».

Что я делаю не так?

ОБНОВЛЕНИЕ

Этот снимок представляет собой первый вызов метода getMenuOptions: первый вызов сервера

Этот снимок экрана относится ко второму обращению к серверу:

  1. 1-я часть 2-го вызова
  2. 2-я часть 2-го вызова

Как вы видите во второй части второго вызова, заголовок, содержащий значение «api-key», отправляется внутри объекта «lazyUpdate».


person Abelardo León González    schedule 19.12.2017    source источник
comment
HttpHeaders являются неизменяемыми объектами, поэтому вы должны обратиться к этому ответу   -  person Aravind    schedule 19.12.2017
comment
@Aravind, если вы увидите мой код, вы увидите, что я создаю новый объект заголовка.   -  person Abelardo León González    schedule 19.12.2017
comment
Не могли бы вы добавить заголовки запроса/ответа, зарегистрированные в сетевых инструментах разработки браузера?   -  person Jota.Toledo    schedule 19.12.2017
comment
@ Jota.Toledo, я обновил свой пост. :)   -  person Abelardo León González    schedule 19.12.2017
comment
Пожалуйста, добавьте свой исходный код в свой вопрос, а не его изображения.   -  person Jota.Toledo    schedule 19.12.2017
comment
@Jota.Toledo, я заменил картинки кодом.   -  person Abelardo León González    schedule 19.12.2017
comment
Моя проблема была решена. Проблема заключалась в неправильной настройке сервера: developer .mozilla.org/es/docs/Web/HTTP/Headers/ Спасибо всем за ваши комментарии и потраченное время на решение моей проблемы. :)   -  person Abelardo León González    schedule 19.12.2017


Ответы (1)


Проблема в реализации вашего метода getMenuOptions. Вы не соблюдаете определение метода post из файла HttpClient.

Это должно быть так:

http
  .post('/api/items/add', body, {
    headers: new HttpHeaders().set('Authorization', 'my-auth-token'),
  }).

Где:

1st arguement: endpoint
2nd: request body
3rd: an object with the request config

В настоящее время вы передаете объект заголовков в качестве второго аргумента и не предоставляете объект конфигурации (третий аргумент), поэтому естественно, что ваш запрос не ведет себя так, как ожидалось.

person Jota.Toledo    schedule 19.12.2017
comment
Возможно, это не метод «отправить» (поскольку я не отправляю тело на сервер), а метод «получить». Я попробую это. Спасибо, @Jota.Toledo - person Abelardo León González; 19.12.2017