2017-06-26 3 views
0

Ich lade ein Helm chart von https://kubernetes-charts.storage.googleapis.com/redis-0.5.1.tgz. (Die Tatsache, dass es Redis oder im Zusammenhang mit Helm oder etwas Bestimmtes ist, ist irrelevant auf diese Frage, die wie Content-Encoding nur über Dinge ist und so weiter.)Wie kann ich feststellen, dass der Inhalt dieser URL gzip-codiert ist?

Wenn ich überprüfen Sie die Header wie folgt aus:

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

... ich sehe keine Content-Encoding Header in der Ausgabe und die Content-Type wird als application/x-tar aufgeführt:

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" 

die resultierende Datei, wenn heruntergeladen, ist ein gzip-tar-Archiv.

Was ist die richtige Art der programmatischen Erkennung, dass die Nutzlast tatsächlich gezippt wird? Oder ist das ein Problem mit dem betreffenden Webserver?

Antwort

0

Ich denke, der Server ist falsch konfiguriert. Da TGZ ist nur Abkürzung für Tar.gz sollte es den Content-Typ-Anwendung erhalten/gzip-

+0

Vielen Dank für Ihre Antwort. Das ist auch mein Verständnis, obwohl ich aus der Antwort von @ N3SS4H ersehen kann, dass es für eine gezippte TAR-Datei keinen grundsätzlich vereinbarten MIME-Typ gibt. –

+0

Die Helm Leute scheinen zu denken, dass es auch falsch konfiguriert ist: https://github.com/kubernetes/charts/issues/1383#issuecomment-311310420 Interessanterweise, wenn das Objekt in Ruhe eine gezippte Datei ist, dann ' Content-Encoding scheint der falsche Weg zu sein, dieses Problem zu lösen. In jedem Fall ist Ihr Verdacht richtig, also akzeptiere ich Ihre Antwort. Vielen Dank! –

0
Content-Type: application/x-tar 

dieser Header sagt Ihnen, den Typ, aber ich bin nicht sicher, dass gzip ist

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

siehe angenommene Antwort unter How to check if a file is gzip compressed?. für die Möglichkeit, programmgesteuert zu identifizieren

+0

Danke für Ihre Antwort. In der Tat sagt der Header "Content-Type" mir, dass das zugrunde liegende Objekt in Ruhe eine '.tar' Datei ist. (Vielleicht ist das wahr (propertly configured); vielleicht ist es das nicht.) _Wenn das wahr ist, dann muss ich, da ich einen Strom von gezippten Bytes und keine gestreamte '.tar' Datei erhalte, eine Möglichkeit haben, das zu sehen Die gzip-Komprimierung wurde auf das Objekt _in flight_ angewendet. Ich sehe keinen solchen Mechanismus hier. –

+0

https://stackoverflow.com/questions/6059302/how-to-check-if-a-file-is-gzip-compressed – N3SS4H

+1

Danke; Ja; Sie haben recht, dass ich die ersten zwei Bytes des Streams schnüffeln kann, um zu sehen, ob sie mit den Bezeichnern einer 'gzip'-Datei übereinstimmen, aber das kann zu falschen Positiven führen. Meine Sorge hier ist nicht einfach "Ich brauche das jetzt zu arbeiten" (ich kann es mit allerlei verschiedenen Workarounds arbeiten lassen) aber eher wie: "Vermisse ich etwas?" –

Verwandte Themen