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ħutHeaders content
Bytes kodifikati oriġinaliŻomm il-kodifikazzjoni applikabbli u t-tul eżatt tal-payload
Bytes dekodifikatiNeħħ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.

Artikli relatati