Välitä gzip-tavut niitä kuvaavien otsakkeiden kanssa
Valitse koodattu tai purettu hyötykuorma Requests-pohjaisessa välityspalvelimessa ja anna alavirran vastaukselle vastaavat content-otsakkeet ja oma kehystyksensä.
Jos Requests on jo purkanut rungon, sen välittäminen Content-Encoding: gzip-otsakkeella pyytää seuraavaa asiakasta purkamaan sen uudelleen. Päätä, minkä hyötykuorman esityksen välityspalvelin lähettää, ennen otsakkeiden kopioimista.
| Lähetetty hyötykuorma | Content-otsakkeet |
|---|---|
| Alkuperäiset koodatut tavut | Säilytä sovellettava koodaus ja hyötykuorman tarkka pituus |
| Puretut tavut | Poista purettu koodaus; poista tai laske uudelleen vastaava pituus |
Koodatuille hyötykuorman tavuille tämä katkelma lukee urllib3:n raakavirran ilman content-purkua:
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 on olemassa oleva vastauksen tuloste. Sen tilan ja otsakkeiden on jo noudatettava valittua käytäntöä; tämä katkelma ei toteuta täydellistä välityspalvelinta.
Siirron kehystys on erillinen gzip content -koodauksesta. Ylävirran HTTP-kirjasto on jo hoitanut kehystyksen, mukaan lukien palasten poiston, joten älä kopioi Transfer-Encoding sokeasti. Alavirran palvelin kehystää oman vastauksensa, vaikka hyötykuorma pysyisi gzip-koodattuna.
response.text ja sen perään UTF-8-koodaus muuttavat myös esitystä eikä voi säilyttää mielivaltaista binääridataa. Sulje tai kuluta ylävirran vastaus joka polulla ja käsittele HTTP-virheet välityspalvelimen sopimuksen mukaan: tämä esimerkki heittää ne sen sijaan että välittäisi ne.