【问题标题】:Using zlib to POST to Google cloud使用 zlib POST 到谷歌云
【发布时间】:2019-03-06 16:25:45
【问题描述】:

我发现了一个类似的问题 (Error: incorrect header check at Zlib._handle.onerror (zlib.js:355:17) errno: -3, code: 'Z_DATA_ERROR'),但尚未得到解答。我也没有在 Google 论坛上看到任何内容。

背景:

  • 我将 zlib 移植到我的项目中
  • 我没有文件系统,因此向 compress() 提供了一个构造为 JSON 字符串的报告。
  • 我知道 JSON 字符串是可以接受的,因为如果我在不压缩的情况下发布它,一切正常。
  • 我正在以最简单的形式使用 zlib(请参阅 Using zlib deflateBound() dynamically
  • 如果我进行自我检查(即,我没有将压缩消息发送到服务器,而是将其输入 deflate,然后将输出与原始消息进行比较),一切看起来都很好。

症状

  • 我对 POST 的响应是 {"status":400,"error":"incorrect header check"}
  • 服务器团队告诉我错误是由 gunzip 引发的,所以我假设问题出在 gzip 标头,而不是 HTTP 标头。

    消息:“{ 错误:不正确的标头检查 在 Gunzip.zlibOnError (zlib.js:153:15) 错误号:-3, 代码:'Z_DATA_ERROR', 暴露:真实, 状态码:400, 状态:400 }"

这是否需要两端的魔法设置?我没有找到一个谷歌文档说“使用这些设置进行压缩(并不是说 zlib 有很多设置)

编辑:我看到的所有内容都提到了压缩文件。事实上,如果您查看 gzip 标头,我看到的几个示例都显示了一个文件名。在我的例子中,没有文件或文件名,compress 对内存中的字符串起作用,我们直接发送生成的二进制数组。我不确定这是否会有所作为。

【问题讨论】:

    标签: google-cloud-platform zlib


    【解决方案1】:

    我发现了问题:“Content-Encoding”设置为“gzip”,但由于我发送的是 zlibstream 而不是 .gz 文件,所以它应该设置为“deflate”。

    详情请见https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 2020-04-13
      • 2016-08-05
      • 2021-10-05
      • 1970-01-01
      • 2018-07-08
      相关资源
      最近更新 更多