Использование zlib для POST в облаке Google - PullRequest
1 голос
/ 06 марта 2019

Я нашел похожий вопрос ( Ошибка: неверная проверка заголовка в Zlib._handle.onerror (zlib.js: 355: 17) errno: -3, код: 'Z_DATA_ERROR' ), но это не имеетответилиНа форумах Google я тоже ничего не видел.

background:

  • Я портировал zlib в свой проект
  • У меня нет файловой системы, поэтому сожмите () подается отчет, построенный в виде строки JSON.
  • Я знаю, что строка JSON является приемлемой, поскольку, если я отправлю ее без сжатия, все будет работать.
  • Я использую zlib в его простейшей форме (см. Динамическое использование zlib deflateBound () )
  • Если я делаю самопроверку (т. Е. Вместо отправки сжатого сообщения на сервер, я передаю его в deflate, а затем сравниваю вывод с оригиналом)все выглядит хорошо.

Симптомы

  • Ответ, который я получаю на POST: {"status": 400, "error": "проверка заголовка неверна"}
  • Команда сервера сообщает мне, что ошибка генерируется gunzip, поэтому я предполагаю, что проблема связана с заголовком gzip, а не с заголовком HTTP.

    сообщение: "{Ошибка: невернопроверка заголовка в Gunzip.zlibOnError (zlib.js: 153: 15) err№: -3, код: 'Z_DATA_ERROR', expose: true, statusCode: 400, status: 400} "

Есть ли какая-то магическая настройка на обоих концах, которая необходима для этого?Я не нашел документ Google, в котором говорится "используйте эти настройки для сжатия (не то чтобы в zlib было много настроек)

Редактировать: все, что я вижу, упоминает сжатие файлов . На самом деле несколькоВсе примеры, которые я видел, показывают имя файла, если вы посмотрите в заголовок gzip. В моем случае нет файла или имени файла, сжатие работает со строкой в ​​памяти, и мы отправляем результирующий двоичный массив напрямую. Я не уверен, что это делаетразница.

1 Ответ

2 голосов
/ 06 марта 2019

Я обнаружил проблему: «Content-Encoding» было установлено на «gzip», но, поскольку я отправляю zlibstream, а не файл .gz, его нужно было установить на «deflate».

Подробнее см. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding.

...