Birbidali gzip byteak deskribatzen dituzten goiburuak erabiliz
Aukeratu karga kodetua edo deskodetua Requests-en oinarritutako proxy batean, eta eman beheko erantzunari dagozkion content goiburuak eta bere markatzea.
Requests-ek gorputza deskonprimatu badu jada, Content-Encoding: gzip erabiliz birbidaltzeak hurrengo bezeroari berriro deskonprima dezan eskatzen dio. Erabaki proxyak zein karga-adierazpen bidaltzen duen goiburuak kopiatu aurretik.
| Bidalitako karga | Content goiburuak |
|---|---|
| Jatorrizko byte kodetuak | Mantendu aplikagarri den kodeketa eta kargaren luzera zehatza |
| Byte deskodetuak | Kendu deskodetutako kodeketa; kendu edo berrikalkulatu dagokion luzera |
Karga-byte kodetuetarako, zati honek urllib3-ren jario gordina irakurtzen du content deskodetzerik gabe:
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 lehendik dagoen erantzun-irteera da. Bere egoerak eta goiburuek jada hautatutako politika bete behar dute; zati honek ez du proxy zerbitzari oso bat inplementatzen.
Transferentzia-markatzea gzip content kodeketatik bereizia da. Goragoko HTTP liburutegiak markatzea jada kudeatu du, zatiak kentzea barne, beraz ez kopiatu Transfer-Encoding itsu-itsuan. Beheko zerbitzariak bere erantzuna markatzen du karga gzip kodetuta jarraitzen duenean ere.
response.text UTF-8 kodeketarekin batera ere adierazpena aldatzen du eta ezin du datu bitar arbitrariorik gorde. Itxi edo kontsumitu goragoko erantzuna bide guztietan, eta kudeatu HTTP erroreak proxy kontratuaren arabera: adibide honek bota egiten ditu birbidali beharrean.