使用zlib POST到Google云端

问题描述 投票:1回答:1

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

背景:

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

症状

  • 我到POST的回复是{“status”:400,“error”:“不正确的标题检查”}
  • 服务器团队告诉我gunzip引发了错误,所以我假设问题是gzip头,而不是HTTP头。 消息:“{错误:Gunzip.zlibOnError(zlib.js:153:15)错误的标题检查错误:-3,代码:'Z_DATA_ERROR',公开:true,statusCode:400,status:400}”

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

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

google-cloud-platform zlib
1个回答
2
投票

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

有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding

© www.soinside.com 2019 - 2024. All rights reserved.