Viss Requests allereie har dekomprimert ein body, ber vidaresending med Content-Encoding: gzip neste klient om å dekomprimere han på nytt. Avgjer kva nyttelastframstilling proxyen sender før headarane vert kopierte.

Send nyttelastContent-headarar
Opphavlege koda byteHald på gjeldande koding og nøyaktig nyttelastlengd
Dekoda byteFjern den dekoda kodinga; fjern eller rekn ut den tilsvarande lengda på nytt

For koda nyttelastbyte les dette utdraget den rå straumen frå urllib3 utan content-dekoding:

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 er den eksisterande responsutdataen. Statusen og headarane må allereie følgje den valde policyen; dette utdraget implementerer ikkje ein fullstendig proxyserver.

Transportinnramming er skild frå gzip content-koding. HTTP-biblioteket oppstraums har allereie handtert innramminga, inkludert fjerning av bitar, så ikkje kopier Transfer-Encoding blindt. Nedstraumsserveren rammar inn sitt eige svar sjølv når nyttelasta blir verande gzip-koda.

response.text etterfølgt av UTF-8-koding endrar òg framstillinga og kan ikkje ta vare på vilkårlege binære data. Lat att eller bruk oppstraumsresponsen på kvar veg, og handter HTTP-feil i samsvar med proxy-kontrakten: dette dømet kastar dei i staden for å vidaresende dei.

Relaterte artiklar