Ako je Requests već dekomprimovao tijelo, prosljeđivanje s Content-Encoding: gzip traži od sljedećeg klijenta da ga ponovo dekomprimuje. Odlučite koji prikaz sadržaja proxy šalje prije kopiranja zaglavlja.

Poslani sadržajContent zaglavlja
Izvorni kodirani bajtoviZadržite primjenjivo kodiranje i tačnu dužinu sadržaja
Dekodirani bajtoviUklonite dekodirano kodiranje; uklonite ili ponovo izračunajte odgovarajuću dužinu

Za kodirane bajtove sadržaja ovaj fragment čita sirovi tok urllib3 bez content dekodiranja:

with requests.get(url, stream=True, timeout=(5, 30)) as upstream:
    upstream.raise_for_status()
    for block in upstream.raw.stream(65536, decode_content=False):
        downstream.write(block)

downstream je postojeći izlaz odgovora. Njegov status i zaglavlja već moraju slijediti odabranu politiku; ovaj fragment ne implementira potpuni proxy server.

Uokvirivanje prijenosa odvojeno je od gzip content kodiranja. HTTP biblioteka uzvodno već je obradila uokvirivanje, uključujući uklanjanje dijelova, pa ne kopirajte Transfer-Encoding naslijepo. Nizvodni server uokviruje vlastiti odgovor čak i kada sadržaj ostane gzip-kodiran.

response.text praćen UTF-8 kodiranjem također mijenja prikaz i ne može sačuvati proizvoljne binarne podatke. Zatvorite ili potrošite uzvodni odgovor na svakoj putanji i obrađujte HTTP greške prema proxy ugovoru: ovaj primjer ih podiže umjesto da ih prosljeđuje.

Povezani članci