Calculer la longueur du contenu POST
Comment puis-je calculer la longueur du contenu, par exemple:
POST /Upload/HTTP/1.1
Host: test.lan
User-Agent: Shockwave Flash
Connection: Keep-Alive
Cache-Control: no-cache
Accept: text/*
Content-Length: ?????
Content-Type: multipart/form-data; boundary=----------------------------4d2179e6b3c0
------------------------------4d2179e6b3c0
Content-Disposition: form-data; name="Filename"
phpinfo.php
------------------------------4d2179e6b3c0
Content-Disposition: form-data; name="ASPSESSID"
6e223eb1c7561e9c599f03cc04e9444b
------------------------------4d2179e6b3c0
Content-Disposition: form-data; name="Filedata"; filename="phpinfo.php"
Content-Type: application/octet-stream
<? phpinfo(); ?>
------------------------------4d2179e6b3c0
Content-Disposition: form-data; name="Upload"
Submit Query
------------------------------4d2179e6b3c0--
source d'informationauteur Someone1234
Vous devez vous connecter pour publier un commentaire.
La
Content-Length
valeur doit être calculée en additionnant l'ensemble des données après la résiliation des en-têtes de message. Dans le cas de votre exemple, c'est tout ce qui est après ce point (avecCRLF
caractères pour la lisibilité):Tout ce qui vient après la première ligne vide (
\r\n
) -- y compris votre limite de délimiteurs, doivent être comptés dans le total de la longueur. Dans la pratique, cela signifie généralement que vous aurez besoin de compiler lesContent-Length
valeur d'en-tête après avoir générer le message complet du corps de l'entité. Une fois que vous avez le corps du message, vous pouvez préfixer avec vos en-têtes pour créer le plein de message HTTP.Selon la spécification HTTP, vous ne sont pas techniquement nécessaire pour spécifier le
Content-Length
en-tête. De La RFC 2616 14.13:Cependant, c'est plutôt une exigence d'une norme pour la plupart des serveurs qui vont généralement de renvoyer un message d'erreur si la
Content-Length
est manquant ou mal spécifié.