Kada preuzeta datoteka počinje HTTP statusnim redom
Držite HTTP okvir odgovora izvan preuzete datoteke umjesto da kopirate svaki bajt primljen sa proxy utičnice u izlaznu datoteku.
Ako navodni PDF ili tabela počinje sa HTTP/1.1 200 OK, preuzimač je sačuvao sirovi odgovor umjesto datoteke. Ovaj shematski odgovor sadrži samo četiri bajta sadržaja:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
4
DATA
0
Datoteka je DATA. Statusni red, zaglavlja, oznaka veličine i završna struktura pripadaju HTTP-u. Uklanjanje fiksnog broja bajtova nije sigurno jer dužine zaglavlja variraju. Kopiranje svega nakon prvog praznog reda i dalje ostavlja okvir dijelova, a informativni odgovori mogu prethoditi konačnom odgovoru.
Za normalno preuzimanje zamijenite kopiranje sa sirove utičnice u datoteku sučeljem za tijelo odgovora HTTP klijenta. Konfigurirajte njegov proxy, provjerite konačni status i prenesite tijelo u privremeni izlaz. Klijent upravlja okvirom poruke: tijela ograničena dužinom, podijeljena na dijelove i ograničena vezom zahtijevaju različito parsiranje.
Kodiranje sadržaja je dodatni sloj. Odlučite trebaju li vam dekodirani bajtovi datoteke ili eksplicitno zatraženi sirovi sadržaj, prema dokumentiranom ponašanju klijenta. Komprimirani bajtovi nisu automatski proxy korupcija.
Ako aplikacija mora zadržati kod na razini utičnice, posjeduje sva ta pravila parsiranja kao i rukovanje čitanjem i pisanjem. Pišite samo broj bajtova koji čitanje stvarno vrati, ne kapacitet međuspremnika, i rukujte djelomičnim upisima. Inače zastarjeli sadržaj međuspremnika može pokvariti čak i ispravno izdvojeno tijelo.
HTTPS zahtijeva više od skidanja CONNECT odgovora: nakon uspješnog postavljanja tunela uspostavite TLS odredišta i zatim parsirajte unutrašnji HTTP odgovor. Šifrirani bajtovi nakon proxy zaglavlja nisu datoteka koja se preuzima.
Ostavite neuspjeli ili nepotpuni izlaz pod privremenim imenom. Objavite ga tek nakon što prijenos i provjere datoteke uspiju; neprazna datoteka ne dokazuje potpuno preuzimanje.