我目前从 Angular 开始。 我们正在与我的团队一起准备一些 POC,以便在我们的应用程序中交换意见。 长话短说 - 我们正在使用其他团队的模块以及发送响应等的所有机制,所以我们在后端的工作只是创建端点,获取数据,并从这个“其他团队的模块”中调用正确的方法。 上次他们将内容编码从“UTF-8”更改为“gzip, deflate”,从那以后我们的 Angular rest 调用就停止工作了。 发送到后端的每个请求都会产生:

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

当通过邮递员处理具有相同标题的数据时,我可以毫无问题地获得数据。

#1楼 票数:0

发现。 根据这个 SO 主题,“当您的 HTTP 请求的标头声称内容是 gzip 编码的时,就会发生这种情况,但事实并非如此。”

  ask by Bartosz Gniado translate from so

未解决问题?本站智能推荐:

1回复

Angular 无法解码 deflate、gzip

我目前从 Angular 开始。 我们正在与我的团队一起准备一些 POC,以便在我们的应用程序中交换意见。 长话短说 - 我们正在使用其他团队的模块以及发送响应等的所有机制,所以我们在后端的工作只是创建端点,获取数据,并从这个“其他团队的模块”中调用正确的方法。 上次他们将内容编码从“UTF-8”更
1回复

无法启用压缩(deflate / gzip)

由于YSlow仍然建议在我的网站http://www.donboscoeltern.de上启用压缩,因此我尝试通过在.htaccess文件中包含以下代码段(以下列出的是最后3个版本)来尝试此操作: 以上版本均未引起任何更改:使用gtmetrix等进行的测试都表明该网站http
1回复

在 Angular 2+ 中压缩传出请求

我想对从 Angular 4 应用程序向 API 项目发出的 POST 和 PUT JSON 请求使用 gzip 或 deflate 压缩。 目前,我正在使用 HttpClient 发送请求。 我曾尝试使用 pako 或 zlib 来生成压缩内容,但服务器返回响应指示压缩算法的错误实现。 我的
2回复

无法解码base64 + deflate数据

我迷失了解码下面的base64字符串 它应该是表示原始XML压缩数据的有效base64数据。 当我在这里尝试在线解码器时: https : //www.samltool.com/decode.php,它为我提供了正确的XML。 我正在执行以下两个步骤: 首先,我解码bas
1回复

无法绕过浏览器缓存和.htaccess中的gzip / deflate

我已经将这些行添加到我的.htaccess文件中。 是的,我知道他们应该做什么以及应该如何工作。 我没有收到任何内部服务器错误,但是Google PageSpeed Insights仍然说,我需要打开浏览器缓存,并且应该缩小/ gzip我的文件。 这里什么不工作? 即使万一说mod_
2回复

无法使用cURL PHP解码gzip

在决定在这里问这个问题之前,我一直在尝试几种方法。...我没有成功...我正在尝试从使用gzip的一个站点解码和读取数据。 我正在使用cURL和PHP。 当我尝试解码并打印结果时,出现一堆乱码的特殊字符,例如: 如果我运行以下PHP脚本,则会出现类似以下错误: 这是我当前
1回复

用deflate算法实现GZIP解压

我需要解压缩 Base64 编码的gzip或从 JavaScript deflate数据,而不会对包大小增加太多(这就是我不能只使用pako )。 我找到了一个不错的小型库,用于解压缩deflate数据,称为UZIP 。 看起来gzip只是用 10 字节的页眉和 8 字节的页脚deflate 。
3回复

GZip或Deflate进行HTTP压缩

哪种压缩方法更好? 我听说过很多关于GZip被更广泛使用,但是Deflate更快(在某些情况下)的来回信息。 有使用哪个标准的公认标准,为什么?
1回复

如何 zlib 膨胀 gzip/deflate 存档

我有一个用 gzip 1.5 编码的存档。 我无法使用 C zlib 库对其进行解码。 zlib inflate()返回 EC -3 stream.msg = "未知压缩方法"。 文件的前 32 个字节是: 我看到前 18 个字节是RFC-1952 gzip 标头。 在 NULL 之后,我
1回复

Gzip / Deflate是否识别模式

我正在研究Gzip的内部结构,并且我知道它使用了Huffman编码和LZ77的组合。 我还意识到,Gzip文件分为几个块,每个块都有一个专门为其构建的字典。 然后,将频繁出现的相似数据替换为指向字典中各个位置的指针。 因此,短语“马赛跑等马”将不得不通过指针一词改为马 。 但