Node.js: chunked Übertragungscodierung

8

Ist dieser Code HTTP / 1.1 gültig?

%Vor%

Ich glaube, ich verstoße gegen HTTP / 1.1 hier? Textdateien scheinen gut zu funktionieren, aber das könnte Zufall sein. Ist meine Kopfzeile "200 OK" oder muss sie "100" sein? Ist ein Header ausreichend?

    
Gert Cuykens 03.06.2011, 23:20
quelle

3 Antworten

11

Wenn Sie Chunked-Transfer-Codierung durchführen, müssen Sie diesen Header tatsächlich festlegen:

Transfer-Encoding: chunked

Sie können anhand der von google zurückgegebenen Header sehen, welche Chunked-Übertragungen für die Startseite und höchstwahrscheinlich andere Seiten enthält:

%Vor%

BEARBEITEN Ja, das Lesen ist viel zu kompliziert:

%Vor%

Da geht's, ein schöner Stream-Puffer, mit dem Sie schreiben können. Hier ist ein Blogbeitrag, den ich über verschiedene Wege zum Einlesen von Dateien geschrieben habe. Ich empfehle, das zu überprüfen, damit Sie sehen können, wie Sie am besten mit Dateien in der asynchronen Umgebung des Knotens arbeiten können.

    
onteria_ 04.06.2011, 00:07
quelle
9

Da Node.js implizit ' Transfer-Encoding: chunked ' setzt, musste ich nur den Inhaltstyp mit Zeichensatz wie:

senden %Vor%

Anfangs war es:

%Vor%

... was nicht funktioniert hat. Die Angabe von " charset = UTF-8 " hat Chrome sofort gezwungen, Chunked-Antworten zu rendern.

    
Eye 26.06.2012 14:53
quelle
3

Warum machen Sie alle fs -Operationen manuell? Sie wären wahrscheinlich besser dran mit der fs.createReadStream() -Funktion.

Ich vermute, dass Chrome erwartet, dass Sie einen 206 -Antwortcode zurückgeben. Überprüfen Sie req.headers.range und prüfen Sie, ob Chrome einen "Bereich" der Mediendatei erwartet, die zurückgegeben werden soll. Wenn dies der Fall ist, müssen Sie nur den Teil der Datei zurücksenden, der vom Webbrowser angefordert wurde.

Warum erfinden Sie das Rad neu? Es gibt Unmengen von Knotenmodulen, die solche Dinge für Sie erledigen. Probieren Sie Connect / Express ' static Middleware. Viel Glück!

    
TooTallNate 03.06.2011 23:31
quelle

Tags und Links