2016-03-19 7 views
0

Das ist aus wikipedia:HTTP segmentierte Übertragungscodierung

Für die Version 1.1 des HTTP-Protokolls wird der segmentierte Übertragungsmechanismus betrachtet immer und sowieso akzeptabel zu sein, auch wenn sie nicht in der TE (Übertragungscodierung) -Anforderung aufgelistet Header-Feld

das ist, was ich von Kunden erhalten (Mozilla, Opera):

GET http://www.google.com/ HTTP/1.1 Host: www .google.com Benutzer-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv: 45,0) Gecko/20100101 Firefox/45.0 Akzeptieren: text/html, application/xhtml + xml, application/xml; q = 0,9, /; q = 0,8 Akzeptieren-Sprache: en-US, en; q = 0,5 Accept-Encoding: gzip, deflate Verbindung: Keep-alive-

Anscheinend gibt es weder Transfer-Encoding-Feld gibt, noch sehe ich keine Stücke (ich habe mit HEX-Editor überprüft, keine zusätzlichen Symbole) .

Ich öffne Verbindung wie folgt (Python)

socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

Ist es geringere Handhabung Brocken in den Botschafts verbindet? Ist das so, wie kann ich wissen, wo die HTTP-Nachricht endet, damit ich aufhören kann, die Anfrage zu lesen und anzufangen?

Antwort

1

Sie sollten die Spezifikation lesen.

Aber einfach, in diesem Fall, da es ein GET ist, und es gibt keinen Inhalt, wird es keinen Content-Length-Header geben. Also hörst du auf zu lesen, wenn du die leere Zeile mit nur einem CR/LF bekommst.

Andernfalls lesen Sie nach dieser Leerzeile und lesen Content-Length Bytes.

Verwandte Themen