Če se domnevni PDF ali preglednica začne z HTTP/1.1 200 OK, je prenašalnik shranil surov odgovor namesto datoteke. Ta shematski odgovor vsebuje le štiri bajte vsebine:

HTTP/1.1 200 OK
Transfer-Encoding: chunked

4
DATA
0

Datoteka je DATA. Vrstica stanja, glave, oznaka velikosti in zaključna struktura pripadajo HTTP. Odstranjevanje fiksnega števila bajtov ni varno, ker se dolžine glav razlikujejo. Kopiranje vsega za prvo prazno vrstico še vedno pusti okvirjanje kosov, informativni odgovori pa lahko pridejo pred končnim odgovorom.

Za običajen prenos zamenjajte kopiranje iz surove vtičnice v datoteko z vmesnikom za telo odgovora odjemalca HTTP. Nastavite njegov proxy, preverite končno stanje in pretakajte telo v začasni izhod. Odjemalec obravnava okvirjanje sporočila: telesa z določeno dolžino, po kosih (chunked) in omejena s povezavo zahtevajo različno razčlenjevanje.

Kodiranje vsebine je dodatna plast. Odločite se, ali potrebujete dekodirane bajte datoteke ali izrecno zahtevano surovo vsebino, na podlagi dokumentiranega vedenja odjemalca. Stisnjeni bajti niso samodejno poškodba proxyja.

Če mora aplikacija obdržati kodo na ravni vtičnice, je odgovorna za vsa ta pravila razčlenjevanja ter za obravnavo branja in pisanja. Zapišite le število bajtov, ki jih je branje dejansko vrnilo, ne zmogljivosti medpomnilnika, in obravnavajte delne zapise. Sicer lahko zastarela vsebina medpomnilnika poškoduje tudi pravilno izluščeno telo.

HTTPS zahteva več kot odstranitev odgovora CONNECT: po uspešno vzpostavljenem tunelu vzpostavite TLS do cilja in nato razčlenite notranji odgovor HTTP. Šifrirani bajti za glavami proxyja niso datoteka, ki jo je mogoče prenesti.

Neuspešen ali nepopoln izhod pustite pod začasnim imenom. Objavite ga šele, ko prenos in preverjanja datoteke uspejo; datoteka, ki ni prazna, ne dokazuje popolnega prenosa.

Sorodni članki