Angular не может декодировать deflate, gzip - PullRequest
0 голосов
/ 21 февраля 2020

Я сейчас начинаю с Angular. Вместе с моей командой мы готовим ПО C для обмена мнениями в нашем приложении. Короче говоря - мы используем модуль другой команды со всем механизмом, отправляющим ответы и т. Д., Поэтому наша работа в бэкэнде заключается только в создании конечной точки, получении данных и вызове надлежащего метода из этого «модуля другой команды». В прошлый раз они изменили кодировку содержимого с «UTF-8» на «gzip, deflate», и с тех пор наши Angular перерывы перестали работать. Каждый запрос, отправленный в бэкэнд, приводит к:

net::ERR_CONTENT_DECODING_FAILED 200 (OK)
HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error"

Я изменил этот модуль REST бэкенда обратно на отправку ответа с кодировкой "UTF-8", и все вернулось к работе должным образом.

Я посмотрел как везде за последние несколько дней и никак не разобрался. Вот некоторый код:

вызов для конечной точки:

private loadResulst() {
  const URL = '/results/v1';
  this.apiService.getResource(URL).subscribe(data => {
    let newValues = [{id: 0, name:''}]
    data['resultList'].forEach((value: string, index: number) => {
      newValues.push({ id: index + 1, name: value });
    })
    this.results = newValues;
  });
}

apiService.getResource:

getResource(resourceUrl: string): Observable<Object> {
  const httpOptions = { headers: this.headers };
  return this.httpClient.get(this.apiUrl + resourceUrl, httpOptions);
}

заголовки запроса:

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,pl;q=0.8
Connection: keep-alive
Host: localhost:4200
Referer: http://localhost:4200/
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36

заголовки ответа :

Access-Control-Allow-Origin: *
connection: close
content-encoding: deflate, gzip
content-length: 69
content-type: application/json
date: Fri, 21 Feb 2020 07:59:11 GMT
server: Apache-Coyote/1.1
X-Powered-By: Express
x-ua-compatible: IE=9

При подходе к данным через Postman с теми же заголовками я получаю данные без проблем.

1 Ответ

0 голосов
/ 21 февраля 2020

узнал. Согласно этой SO topi c, «это происходит, когда заголовки вашего HTTP-запроса утверждают, что контент закодирован gzip, но это не так».

...