Ако је Requests већ декомпримовао тело, прослеђивање са Content-Encoding: gzip тражи од следећег клијента да га поново декомпримује. Одлучите који приказ садржаја прокси шаље пре копирања заглавља.

Послати садржајContent заглавља
Изворни кодирани бајтовиЗадржите примењиво кодирање и тачну дужину садржаја
Декодирани бајтовиУклоните декодирано кодирање; уклоните или поново израчунајте одговарајућу дужину

За кодиране бајтове садржаја овај фрагмент чита сирови ток urllib3 без 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 је постојећи излаз одговора. Његов статус и заглавља већ морају следити изабрану политику; овај фрагмент не имплементира потпуни прокси сервер.

Уоквиривање преноса је одвојено од gzip content кодирања. HTTP библиотека узводно већ је обрадила уоквиривање, укључујући уклањање делова, зато не копирајте Transfer-Encoding наслепо. Низводни сервер уоквирује сопствени одговор чак и када садржај остане gzip-кодиран.

response.text праћен UTF-8 кодирањем такође мења приказ и не може сачувати произвољне бинарне податке. Затворите или потрошите узводни одговор на свакој путањи и обрађујте HTTP грешке према proxy уговору: овај пример их подиже уместо да их прослеђује.

Повезани чланци