Как получить данные gzip из бэкэнда в angular 5, используя httpclient - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь получить заархивированный файл из серверной части.Пожалуйста, найдите код для httpclient, как показано ниже:

Я пробовал несколько вариантов в заголовке, добавляя тип контента с различными параметрами.Но не в состоянии придумать точный шаблон.Я не мог найти ничего, связанного с получением сжатых данных с сервера в угловых API.Пожалуйста, дайте мне знать, если кто-нибудь придумал бы что-то подобное.

getSpecialHeaders() {
    return new HttpHeaders({
         'Content-Encoding': 'gzip',
         'specialHeader': '',
         'Content-Type': 'gzip'
    });
}

getAllUnitsReport() {
 //Function to get the gzip data
const headersSpl = this.getSpecialHeaders();
//httpoptions with different options tried in content-type and accept encoding
const httpOptions = {
  headers : headersSpl };
return this.httpClient.get(envConfig.appURL.assetAdoption, httpOptions)
  .catch((error) => {
    return Observable.of(error);
  });}

Я получаю сообщение об ошибке после успешного вызова http, как показано ниже:

Http-сообщение об ошибке для (неизвестный URL): 0 Неизвестная ошибка

1 Ответ

0 голосов
/ 20 марта 2019

Заголовок Content-Encoding - это заголовок ответа, предоставляемый сервером.

Обычно клиент предоставляет заголовок Accept-Encoding, чтобы указать, какую кодировку содержимого вы хотите запросить.

Например,: Accept-Encoding: gzip, deflate

См. MDN на Сжатие с помощью gzip

Однако этот конкретный заголовок помечен как запрещенный заголовок , означающий, что он не может бытьустанавливается программно с помощью Javascript, который выполняется в браузере (однако все еще работает в Node).

Большинство браузеров автоматически добавляют заголовок Accept-Encoding, содержащий все поддерживаемые им кодировки содержимого.

...