#angular #angular-httpclient #angular-http-interceptors
#угловой #угловой-httpclient #угловые http-перехватчики
Вопрос:
По какой-то причине мои заголовки игнорируются при выполнении запроса.
(ниже приведена урезанная версия того, что я делаю)
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
});
Что я замечаю при использовании инструмента разработки, так это то, что объект [ HTTPHeaders
] headers
только помещает новый заголовок в lazyUpdate
свойство / карту.
В настоящее время установлен HttpInterceptor, который при срабатывании объекта запроса не содержит ни одного из заголовков, которые я установил в запросе.
Это проверялось снова и снова, и все правильно для запроса, заголовки находятся в объекте (хотя и в этой карте lazyUpdate), но по какой-то неизвестной причине они, похоже, просто игнорируются в запросе. Таким образом, в запросе переопределяется его Content-Type
свойство, поскольку он думает, что там его нет.
Есть мысли?
Ответ №1:
Кажется, что документация, над которой я работал, была неправильной. Это было связано с this.httpClient.put(url, body, options)
методом …. кажется, я работал над пониманием того, что body
параметр был необязательным, а это не так.
Таким образом, последний вызов должен был передать большой двоичный объект в качестве второго параметра и сохранить параметры в качестве третьего параметра…
return this.httpClient.put<HttpEvent<Blob>>(`${encodeURIComponent(file.name)}`, file, {
responseType: "blob",
observe: "events",
headers: headers,
withCredentials: this.configuration.withCredentials
});
Комментарии:
1. Типичная теория резиновой утки, тратьте века, пытаясь это исправить, объясните это в StackOverflow и решите это через несколько минут….. @_@