Как узнать, что содержимое этого URL-адреса закодировано с помощью gzip?

Я загружаю диаграмму Helm с сайта https://kubernetes-charts.storage.googleapis.com. (Тот факт, что это Redis или связан с Helm или чем-то в частности, не имеет отношения к этому вопросу, который касается только таких вещей, как Content-Encoding и так далее.)

Когда я проверяю его заголовки следующим образом:

$ curl -H "Accept-Encoding: gzip" -I https://kubernetes-charts.storage.googleapis.com/redis-0.5.1.tgz

… Я не вижу заголовка Content-Encoding в выводе, а Content-Type указан как application/x-tar:

HTTP/1.1 200 OK
X-GUploader-UploadID: AEnB2UqBzSXfTToMAdMARXSjJeN0on3jaNY3u74eXcWfvqsOwRpi38Xc6T0XrrmY4otPeySaYRwXyHccHYtChoPAgFQwYZhQMhcpZRWtZURRANGdfRJoupI
Expires: Tue, 27 Jun 2017 00:21:59 GMT
Date: Mon, 26 Jun 2017 23:21:59 GMT
Cache-Control: public, max-age=3600
Last-Modified: Fri, 05 May 2017 03:03:41 GMT
ETag: "e4184c81a58fb731283847222a1f4005"
x-goog-generation: 1493953421241613
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 3550
x-goog-meta-goog-reserved-file-mtime: 1493953414
Content-Type: application/x-tar
x-goog-hash: crc32c=bQHveg==
x-goog-hash: md5=5BhMgaWPtzEoOEciKh9ABQ==
x-goog-storage-class: STANDARD
Accept-Ranges: bytes
Content-Length: 3550
Server: UploadServer
Alt-Svc: quic=":443"; ma=2592000; v="39,38,37,36,35"

Полученный файл при загрузке представляет собой сжатый tar-архив.

Каков правильный способ программного определения того, что полезная нагрузка действительно сжата? Или это проблема с рассматриваемым веб-сервером?


person Laird Nelson    schedule 26.06.2017    source источник


Ответы (2)


Я думаю, что сервер неправильно настроен. Поскольку .tgz — это просто сокращение от .tar.gz, он должен получить тип содержимого application/gzip-

person fhossfel    schedule 26.06.2017
comment
Спасибо за ваш ответ. Я тоже так понимаю, хотя из ответа @ N3SS4H я вижу, что не существует принципиально согласованного типа MIME для сжатого tar-файла. - person Laird Nelson; 27.06.2017
comment
Разработчики Helm, похоже, тоже считают, что он неправильно настроен: charts/issues/1383#issuecomment-311310420 Интересно, однако, что если объект в состоянии покоя представляет собой сжатый gzip-файл, то Content-Encoding кажется неправильным способом решения этой проблемы. В любом случае, ваше подозрение верно, поэтому я принимаю ваш ответ. Спасибо! - person Laird Nelson; 27.06.2017

Content-Type: application/x-tar

этот заголовок сообщает вам тип, но я не уверен, что это gzip

https://superuser.com/questions/901962/what-is-the-correct-mime-type-for-a-tar-gz-file

см. принятый ответ в Как проверить, сжат ли файл gzip? . для способа идентификации программно

person N3SS4H    schedule 26.06.2017
comment
Спасибо за Ваш ответ. Действительно, заголовок Content-Type говорит мне, что лежащий в основе объект — это файл .tar. (Может быть, это правда (правильно настроено); может быть, это не так.) Если это правда, то, поскольку я получаю поток сжатых байтов, а не потоковый .tar файл, то я должен иметь способ чтобы увидеть, что gzip сжатие было применено к объекту в полете. Я не вижу здесь такого механизма. - person Laird Nelson; 27.06.2017
comment
Спасибо; да; вы правы в том, что я могу обнюхать первые два байта потока, чтобы увидеть, соответствуют ли они идентификаторам файла gzipped, но это может привести к ложным срабатываниям. Меня беспокоит не просто то, что мне нужно, чтобы это работало сейчас (я могу заставить его работать со всевозможными обходными путями), а скорее: я что-то упустил? - person Laird Nelson; 27.06.2017