Node Express Content-Length
- Je utiliser node.js et de l'exprimer dans un petit projet. J'ai mis en-tête de réponse comme le coup:
res.set({'Content-Type':'text/plain;charset=utf-8',
'Content-Length': Buffer.byteLength(data, 'utf-8')});
Je peux utiliser console.log
les données d'impression à la longueur de l'est de 317.
Mais au navigateur de la console, je viens d'obtenir ces:
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/plain;charset=utf-8
Date:Sat, 01 Jun 2013 08:21:59 GMT
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:Express
Alors, pourquoi le content-length disparu?
source d'informationauteur Allen Heavey
Vous devez vous connecter pour publier un commentaire.
La réponse a
Transfer-Encoding: chunked
. IciContent-Length
n'est pas applicable, parce que le contenu est envoyé dans une ou plusieurs pièces (morceaux) à l'intérieur du corps de la réponse, avec un marqueur indiquant l'octet de longueur de chaque morceau. http://en.wikipedia.org/wiki/Chunked_transfer_encodingNode.js par défaut
Transfer-Encoding: chunked
. Toutefois, cette option est désactivée par le paramètre de laContent-Length
en-tête sur le natif de la réponse http objet. La Documentation du module HTTP dit:En passant par la
Content-Encoding:gzip
d'en-tête dans votre réponse, vous avez probablement activé leconnect.compress
middleware. Leconnect.compress
middleware supprime laContent-Length
en-tête.Dans tous les cas, sauf si vous êtes de la génération au format gzip vous-même du contenu, la
Content-Length
en-tête, vous générez vous-même serait certainement inapproprié pour la finale (au format gzip) le corps de la réponse. Heureusement, le connecter middleware prend soin de cela pour vous.Lors de l'utilisation d'Exprimer ou de vous Connecter, vous ne devriez pas supposer que les choses que vous "envoyer" avec la res objet réellement obtenir envoyés de cette façon pour le client. Il y a middleware entre les deux. Tous les middlewares a la possibilité de modifier à tout propos au sujet de la réponse, y compris la modification de la réponse du corps, et l'ajout, la suppression et la modification des en-têtes. En va de même pour la demande.
Voir aussi ces questions: