Pripojenie sa otvorí. Hlavičky požiadavky odchádzajú. Zdá sa, že súbor sa nehýbe. Jedno vysvetlenie je, že klient čaká na odpoveď na Expect: 100-continue pred odoslaním tela.

Mechanizmus umožňuje príjemcovi odmietnuť požiadavku na základe jej hlavičiek pred odoslaním potenciálne veľkého nahrávania. Zvyčajná úspešná postupnosť je:

request headers → 100 Continue → request body → final response

100 je informačné: umožňuje klientovi pokračovať, ale neznamená, že súbor bol uložený alebo že operácia aplikácie bola úspešná. Git push vracajúci HTTP 417 je jeden konkrétny prípad nesplneného očakávania.

Zistite, ktorú odpoveď klient dostal

PozorovanieČo preskúmať
100 ContinueKlient môže pokračovať s telom
Konečné odmietnutie pred telomOperácia bola odmietnutá vo fáze hlavičiek
Žiadna očakávaná prechodná odpoveďPolitika čakania klienta a spracovanie na tejto ceste

curl má samostatné nastavenie čakania expect-continue. Ak toto čakanie libcurl vyprší bez očakávanej odpovede, telo sa odošle aj tak; vypršanie samo o sebe nie je neúspešný celý prenos. Nastavenie je oddelené od času povoleného na celý prenos. Zvýšenie posledného môže nechať tú istú počiatočnú pauzu nevysvetlenú.

Zistite tiež, ktorý HTTP rozhovor prenáša Expect. Pri bežnom CONNECT k cieľu HTTPS sa výmena nahrávania webovej stránky nachádza vnútri TLS; dopredná proxy jednoducho nepreskúmava vnútornú hlavičku očakávania. Cesta zachytávania alebo preposielania v čistom texte je iná.

Odstránenie očakávania môže byť vedomá voľba kompatibility, ale znamená, že klient môže začať odosielať veľké telo skôr, než sa dozvie o včasnom odmietnutí. Porovnajte toto správanie so skutočnou požiadavkou. Neopisujte historické riešenie pre starú proxy ako univerzálny pokyn odstrániť hlavičku z každého nahrávania.

Súvisiace články