Jidadka POST ee Python HTTP proxy waxaa lagu kaydin karaa rfile
Akhri codsiga Python HTTP proxy iyada oo loo marayo gelinta kaydsan ee handler-ka halkii aad ka sugayso bytes hore uga baxay kaydka socket-ka.
Proxy-ga hore wuxuu akhriyaa khadka codsiga iyo madaxyada, wuu gudbiyaa, ka dibna wuxuu select ku sugayaa jir POST. Macmiilku hore ayuu u diray. Labada dhinac waxay u muuqdaan inay midba midka kale sugayo.
Marka la isticmaalayo BaseHTTPRequestHandler ee Python, akhrinta madaxyada waxay dhex martaa rfile, oo ah qulqulka gelinta kaydsan. Qulqulkaas wuxuu horay u akhrin karaa oo u hayn karaa bytes kuwaas oo ka tirsan jirka. Sugitaanka socket-ka hoose wuxuu kaliya weydiiyaa haddii file descriptor-kiisu diyaar yahay; ma weydiiyo haddii qulqulka Python uu hore u leeyahay xog la isticmaali karo.
Raac kaydka akhriyay madaxyada
Jirka sidoo kale ka akhri self.rfile. Ha u wareegin self.connection.recv ka dib markaad madaxyada ku falanqayso qulqulka kaydsan. Haddii kale koodku wuxuu dhaafi karaa bytes uu qulqulkaas hore u hayo oo wuxuu sugayaa xog aan mar dambe la soo diri doonin.
In rfile laftiisa loo gudbiyo select ma keento in select uu baaro kaydkiisa Python. API-ga diyaargarowga wuxuu ku shaqeeyaa file descriptor-ka shayga.
Codsiga leh hal Content-Length ansax ah oo aan lahayn Transfer-Encoding, isticmaal si sax ah tirada bytes ee lagu dhawaaqay, adigoo maareynaya dhammaadka gelinta ee goor hore iyo xadkaaga cabbirka iyo wakhtiga. Ha akhrin ilaa EOF: macmiil isticmaalaya xiriir joogto ah ayaa laga yaabaa inuu xiriirka uga tago furan ka dib markuu dhammeeyo codsiga.
Ka dhig qaabaynta qayb cad oo proxy-ga ah
Jidadka codsiga ee chunked waxay u baahan yihiin taageero qaabayn chunked. Lama akhrin karo iyada oo la raadinayo Content-Length maqan. Xogta dhererka aan caddayn waxay u baahan tahay waddo diidmo oo qeexan, halkii la dooran lahaa madaxa u muuqda mid ku habboon.
Handler xannibaya wuxuu sii wadi karaa isticmaalka interface-ka qulqulkiisa akhrin xaddidan. Proxy dhacdooyin ku shaqeeya wuxuu u baahan yahay qaab kayd ah oo isku daraya akhrinta horay ee parser-ka iyo maareynta diyaargarowga. Beddelka waqtiga sugitaanka lama heshiin doono laba isticmaale oo madaxbannaan oo isku socket ah.
Cilad-baaristan waxay gaar u tahay halka bytes-ka soo galaya lagu hayo. Ka dib marka proxy-gu isticmaalo jirka saxda ah, wali waa inuu u gudbiyaa jirkaas qaabayn HTTP joogto ah. Handler-ka caadiga ah ee http.server waa meel faa'iido leh oo lagu fahmo habka, laakiin ma aha hirgelin proxy hore oo wax soo saar.