De Forward-Proxy liest d'Ufrozeil an d'Headeren, leet se weider an da waart en am select op e POST-Kierper. De Client huet en schonn geschéckt. Béid Säite schéngen openeen ze waarden.

Mat Python sengem BaseHTTPRequestHandler geet d'Liese vun den Headeren iwwer rfile, en gepufferte Input-Stream. Dee Stream kann virulesen an Bytes halen, déi zum Kierper gehéieren. Um ënneschte Socket ze waarden freet just, ob säin Dateideskriptor prett ass; et freet net, ob de Python-Stream schonn brauchbar Donnéeën enthält.

Follegt de Puffer, deen d'Headeren gelies huet

Liest de Kierper och iwwer self.rfile. Wiesselt net op self.connection.recv, nodeems dir d'Headeren mam gepufferte Stream analyséiert hutt. Soss kann de Code Bytes iwwersprangen, déi dee Stream schonn hält, an op Donnéeë waarden, déi ni méi geschéckt ginn.

rfile selwer un select ze ginn, mécht net, datt select säi Python-Puffer iwwerpréift. D'Bereetschafts-API funktionéiert iwwer den Dateideskriptor vum Objet.

Fir eng Ufro mat engem gültege Content-Length an ouni Transfer-Encoding, verbraucht genee déi deklaréiert Zuel vu Bytes, a behandelt de virzäitegen Enn vum Input souwéi Är Gréissten- an Zäitlimiten. Liest net bis EOF: e Client mat enger permanente Verbindung kann d'Verbindung openthalen, nodeems d'Ufro fäerdeg ass.

Maacht Framing zu engem expliziten Deel vum Proxy

Chunked Ufrokierper brauchen Ënnerstëtzung fir chunked Framing. Si kënnen net gelies ginn, andeems een eng fehlend Content-Length sicht. Zweedeiteg Längtmetadaten brauchen en definéierte Refuswee, amplaz dee Header ze wielen, deen bequem schéngt.

E blockéierenden Handler kann seng Stream-Schnittstell mat begrenzten Liesungen weider benotzen. En eventgesteierte Proxy braucht e Puffermodell, dat d'Virulese vum Parser mat der Bereetschaftsbehandlung integréiert. En Timeout z'änneren bréngt zwou onofhängeg Konsumenten vum selwechte Socket net an Einklang.

Dës Diagnos bezitt sech dorobber, wou déi erakomm Bytes gehal ginn. Nodeems de Proxy de richtege Kierper verbraucht huet, muss en en nach mat konsequentem HTTP-Framing weiderleeden. Den Standard-Handler http.server ass eng nëtzlech Plaz, fir de Mechanismus ze verstoen, awer et ass keng Produktiounsimplementatioun vun engem Forward-Proxy.

Ähnlech Artikelen