Angular HTTPClient игнорирует заголовки - PullRequest
2 голосов
/ 12 марта 2019

По какой-то причине мои заголовки игнорируются при выполнении запроса.

(ниже приведена сокращенная версия того, что я делаю)

let headers = new Headers();

headers = headers.set('Content-Type', file.mime);
headers = headers.set('X-Blah', "Test");

return this.httpClient.put<HttpEvent<Blob>>(`${encodeURIComponent(file.name)}`, {
   data: file,
   responseType: "blob",
   observe: "events",
   headers: headers,
   withCredentials: this.configuration.withCredentials
});

При использовании инструмента dev я заметил, что объект [HTTPHeaders] headers только помещает новый header в свойство / карту lazyUpdate.

В настоящее время существуетустановлен HTTPInterceptor, который при запуске объекта запроса не содержит ни одного из заголовков, которые я установил в запросе.

Он был проверен снова и снова, и все правильно для запроса, заголовки находятся в объекте(хотя в той карте lazyUpdate), но по неизвестной причине они просто игнорируются в запросе.Таким образом, в запросе переопределено свойство Content-Type, поскольку он считает, что его там нет.

Есть мысли?

1 Ответ

1 голос
/ 12 марта 2019

Кажется, что документация, над которой я работал, была неверной. Это было связано с методом this.httpClient.put(url, body, options) .... кажется, я работал над пониманием того, что параметр body является необязательным, а это не так.

Таким образом, последний вызов должен был передать Blob в качестве второго параметра и сохранить параметры в качестве третьего параметра ...

return this.httpClient.put<HttpEvent<Blob>>(`${encodeURIComponent(file.name)}`, file, {
   responseType: "blob",
   observe: "events",
   headers: headers,
   withCredentials: this.configuration.withCredentials
});
...