ubuntuusers.de

Apache: Send content length header in ISO files

Status: Ungelöst | Ubuntu-Version: Server 17.10 (Artful Aardvark)
Antworten |

JasMich.de

Avatar von JasMich.de

Anmeldungsdatum:
26. Mai 2016

Beiträge: 212

Wohnort: Hamburg

Hallo zusammen,

ich habe einen Apache auf meinem Ubuntu installiert. Auf der Website steht ein etwa 4GB großer ISO download zur Verfügung. Wie kann ich Apache dazu bringen, auch bei ISOs dei content length mitzusenden?

Ich habe schon:

1
2
3
<FilesMatch "\.iso$">
  SetEnv no-gzip 1
</FilesMatch>

Funzt nicht...

Danke schon mal für Antworten! JasMich.de

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

JasMich.de schrieb:

Wie kann ich Apache dazu bringen, auch bei ISOs dei content length mitzusenden?

Das sollte er automatisch machen, sofern er die Datei selbst ausliefert.

Ich habe schon:

1
2
3
<FilesMatch "\.iso$">
  SetEnv no-gzip 1
</FilesMatch>

Funzt nicht...

Welche Apache-Version nutzt du?

JasMich.de

(Themenstarter)
Avatar von JasMich.de

Anmeldungsdatum:
26. Mai 2016

Beiträge: 212

Wohnort: Hamburg

me@pc ~ # /usr/sbin/apache2 -v
Server version: Apache/2.2.22 (Ubuntu)
Server built:   Sep 21 2017 20:51:54

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

JasMich.de schrieb:

me@pc ~ # /usr/sbin/apache2 -v
Server version: Apache/2.2.22 (Ubuntu)
Server built:   Sep 21 2017 20:51:54

Also der Content-Length-Header ist im RFC als "SHOULD" markiert. Daher gibt es meines Wissens auch keine Möglichkeit den Content-Length-Header im Apache zu deaktivieren. Wie sehen denn die Header aus, wenn du ein ISO abrufst?

JasMich.de

(Themenstarter)
Avatar von JasMich.de

Anmeldungsdatum:
26. Mai 2016

Beiträge: 212

Wohnort: Hamburg

Entschuldigung, ich habe mir gerade den header angeguckt: Content-length ist gesetzt, aber dafür steht da beim content-type text/plain .

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 30 Nov 2017 14:25:42 GMT
Content-Type: text/plain
Content-Length: 4197466112
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Fri, 24 Nov 2017 00:20:11 GMT
ETag: "304065a-fa304000-55eaf840c24d4"
Accept-Ranges: bytes

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

JasMich.de schrieb:

Entschuldigung, ich habe mir gerade den header angeguckt: Content-length ist gesetzt, aber dafür steht da beim content-type text/plain .

Was sagt denn

grep iso /etc/mime.types

JasMich.de

(Themenstarter)
Avatar von JasMich.de

Anmeldungsdatum:
26. Mai 2016

Beiträge: 212

Wohnort: Hamburg

Meinst du auf dem Server oder auf den Hosts? Das Download-Problem gibt es nämlich auch auf nicht-Unix Rechnern. Z.B. Chromium und Firefox zeigen nicht an, wie groß die Datei insgesamt ist und können den Download nach dem Pausieren nicht fortsetzen.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

JasMich.de schrieb:

Meinst du auf dem Server oder auf den Hosts?

Auf dem Server, also dort, wo der Apache2 auch läuft.

Das Download-Problem gibt es nämlich auch auf nicht-Unix Rechnern. Z.B. Chromium und Firefox zeigen nicht an, wie groß die Datei insgesamt ist und können den Download nach dem Pausieren nicht fortsetzen.

Also das Problem hattest du noch gar nicht erwähnt. Vielleicht wäre es besser gewesen, gleich dein Problem zu beschreiben.

Ich vermute, dass es nicht am Apache liegt. Er liefert den Header Accept-Ranges mit, der anzeigt, dass dieses Feature unterstützt wird. Zum Test kannst du mal probieren, ob dein Apache korrekte partielle Antworten geben kann:

curl -i -H "Range: bytes=1024-2048" $URL

Wenn das funktioniert, sollte man auch Downloads fortsetzen können, zumindest serverseitig.

JasMich.de

(Themenstarter)
Avatar von JasMich.de

Anmeldungsdatum:
26. Mai 2016

Beiträge: 212

Wohnort: Hamburg

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
me@PC:~$ curl -i -H "Range: bytes=1024-2048" http://gobuntu.jasmich.de/dist/Be/Gobuntu-Beryllium-amd64.iso
HTTP/1.1 206 Partial Content
Server: nginx
Date: Fri, 01 Dec 2017 09:19:28 GMT
Content-Type: text/plain
Content-Length: 1025 ##Die Größe stimmt eindeutig nicht mit meiner ISO überein.
Connection: keep-alive
Last-Modified: Fri, 24 Nov 2017 00:20:11 GMT
ETag: "304065a-fa304000-55eaf840c24d4"
Accept-Ranges: bytes
Content-Range: bytes 1024-2048/4197466112

Warning: Binary output can mess up your terminal. Use "--output -" to tell 
Warning: curl to output it to your terminal anyway, or consider "--output 
Warning: <FILE>" to save to a file.

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

JasMich.de schrieb:

me@PC:~$ curl -i -H "Range: bytes=1024-2048" http://gobuntu.jasmich.de/dist/Be/Gobuntu-Beryllium-amd64.iso
[...]
Content-Length: 1025 ##Die Größe stimmt eindeutig nicht mit meiner ISO überein.
[...]
Content-Range: bytes 1024-2048/4197466112
[...]

Passt doch, der Apache unterstuetzt das Fortsetzen von abgebrochenen Downloads und kennt auch die gesamte Dateigroesse.

JasMich.de

(Themenstarter)
Avatar von JasMich.de

Anmeldungsdatum:
26. Mai 2016

Beiträge: 212

Wohnort: Hamburg

Siehe Anhang: Trotzdem zeigen Chromium und Firefox nicht an, wie groß die Datei ist. Wenn ich z.B. eine Ubuntu-ISO auf ubuntu.com downloade, wird die Größe angezeigt.

Bilder

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

JasMich.de schrieb:

1
HTTP/1.1 206 Partial Content

Das sagt schonmal, dass der Apache die Funktionalität grundsätzlich unterstützt.

Content-Length: 1025 ##Die Größe stimmt eindeutig nicht mit meiner ISO überein.

Das ist klar, wir wollten ja auch gerade nur einen Ausschnitt der ISO-Datei herunterladen...

Content-Range: bytes 1024-2048/4197466112

... was man auch hieran gut sieht. Es wurden die Bytes 1024-2048 von 4197466112 ausgegeben.

Fazit: Dein Apache unterstützt das Abrufen von Teilen einer Datei, und damit auch das Fortsetzen eines abgebrochenen Downloads.

JasMich.de

(Themenstarter)
Avatar von JasMich.de

Anmeldungsdatum:
26. Mai 2016

Beiträge: 212

Wohnort: Hamburg

Und hast du dann eine Idee, warum die Webbrowser die Downloadgröße nicht anzeigen wollen??

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

JasMich.de schrieb:

Und hast du dann eine Idee, warum die Webbrowser die Downloadgröße nicht anzeigen wollen??

Nicht wirklich. Navigiere mal zur Netzwerk-Konsole (F12->Netzwerk) und schau nach, ob dort die Dateigrößen für die einzelnen Elemente korrekt sind. Außerdem kannst du gucken, ob bei dem ISO-Download im Antwort-Header die korrekte Content-Length drin steht.

Falls das nichts geheimes ist, kannst du mir auch mal nen Link schicken. Ich habe das Szenario bei mir gerade mal nachgestellt, konnte das Problem aber nicht nachvollziehen.

JasMich.de

(Themenstarter)
Avatar von JasMich.de

Anmeldungsdatum:
26. Mai 2016

Beiträge: 212

Wohnort: Hamburg

Antworten |