Għaddi l-bytes gzip mal-headers li jiddeskrivuhom
Agħżel payloads kodifikati jew dekodifikati fi proxy bbażat fuq Requests, imbagħad agħti lir-risposta downstream headers content li jaqblu u l-framing tagħha stess.
Jekk Requests diġà ddekompressa body, l-għaddi tiegħu b'Content-Encoding: gzip jitlob lill-klijent li jmiss biex jiddekompressah mill-ġdid. Iddeċiedi liema rappreżentazzjoni tal-payload tibgħat il-proxy qabel ma tikkopja l-headers tiegħu.
| Payload mibgħut | Headers content |
|---|---|
| Bytes kodifikati oriġinali | Żomm il-kodifikazzjoni applikabbli u t-tul eżatt tal-payload |
| Bytes dekodifikati | Neħħi l-kodifikazzjoni dekodifikata; neħħi jew erġa kkalkula t-tul korrispondenti |
Għall-bytes tal-payload kodifikati, dan is-silta jaqra l-fluss mhux ipproċessat ta' urllib3 mingħajr dekodifikazzjoni content:
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 huwa l-output tar-risposta eżistenti. L-istat u l-headers tiegħu diġà għandhom isegwu l-politika magħżula; dan is-silta ma jimplimentax server proxy komplet.
Il-framing tat-trasferiment huwa separat mill-kodifikazzjoni content gzip. Il-librerija HTTP upstream diġà ttrattat il-framing, inkluż it-tneħħija tal-biċċiet, għalhekk tikkopjax Transfer-Encoding bl-addoċċ. Is-server downstream ifframja r-risposta tiegħu stess anki meta l-payload jibqa' kodifikat bil-gzip.
response.text segwit minn kodifikazzjoni UTF-8 ukoll ibiddel ir-rappreżentazzjoni u ma jistax jippreserva data binarja arbitrarja. Agħlaq jew ikkonsma r-risposta upstream fuq kull mogħdija, u ttratta l-iżbalji HTTP skont il-kuntratt tal-proxy: dan l-eżempju jarmihom minflok ma jgħaddihom.