Die Antwort hat Transfer-Encoding: chunked
. Hier Content-Length
ist nicht anwendbar, da der Inhalt in einem oder mehreren Teilen (Chunks) innerhalb des Antworttextkörpers mit einem Marker gesendet wird, der die Byte-Länge jedes einzelnen Chunks angibt. http://en.wikipedia.org/wiki/Chunked_transfer_encoding
Node.js ist standardmäßig Transfer-Encoding: chunked
. Dies wird jedoch deaktiviert, indem der Header Content-Length
auf dem systemeigenen HTTP-Antwortobjekt festgelegt wird. Documentation of HTTP module sagt:
Senden eines Headers "Content-Länge" deaktiviert die standardmäßige Chunked-Codierung.
Going durch die Content-Encoding:gzip
Header in Ihrer Antwort, haben Sie wahrscheinlich die connect.compress
Middleware aktiviert. Die connect.compress
Middleware entfernt den Header Content-Length
.
In jedem Fall, es sei denn, Sie generieren gziped Inhalte selbst, wäre die Content-Length
Header, die Sie selbst generieren, sicherlich nicht geeignet für die endgültige (gziped) Antworttext. Glücklicherweise kümmert sich die connect Middleware darum.
Wenn Sie Express oder Connect verwenden, sollten Sie nicht davon ausgehen, dass die Dinge, die Sie mit dem res-Objekt senden, auf diese Weise an den Client gesendet werden. Da ist Middleware dazwischen. Die gesamte Middleware hat die Möglichkeit, fast alles über die Antwort zu ändern, einschließlich des Änderns des Antworthauptteils und des Hinzufügens, Entfernens und Änderns von Überschriften. Gleiches gilt für die Anfrage.
Siehe auch diese Fragen:
Bitte kommentieren, warum Sie downvote? –
Tut mir leid, ich weiß nicht, wer das getan hat, aber Sie haben Recht. Vielen Dank. Nach dem Kommentar 'app.use (express.compress());' erscheint die Inhaltslänge. Aber kann ich sowohl gzip als auch content-length verwenden? –
@DMDGeeker, im Prinzip ja, Sie können 'Transfer-Encoding: gzip' und' Content-Length' zusammen verwenden.Allerdings nicht mit der Middleware 'express.compress'. Das unterstützt das einfach nicht. Grundsätzlich ist das Senden eines Content-Length-Headers zu bevorzugen, wenn Sie die Antwortlänge kennen. Sie könnten Inhalte selbst komprimieren oder nach einer anderen "Komprimierungs" -Middleware suchen. Aber "Content-Length" muss den tatsächlich gesendeten Inhalt wiedergeben. Es muss die Bytelänge des endgültigen (vielleicht komprimierten) Körpers widerspiegeln. –