Spojení se otevře. Hlavičky požadavku odcházejí. Zdá se, že se soubor nehýbe. Jedno vysvětlení je, že klient čeká na odpověď na Expect: 100-continue, než odešle tělo.

Mechanismus umožňuje příjemci odmítnout požadavek podle hlaviček dříve, než je odesláno potenciálně velké nahrávání. Obvyklý úspěšný sled je:

request headers → 100 Continue → request body → final response

100 je informativní: umožňuje klientovi pokračovat, ale neznamená, že soubor byl uložen nebo že operace aplikace proběhla úspěšně. Git push vracející HTTP 417 je jeden konkrétní případ selhání očekávání.

Zjistěte, kterou odpověď klient dostal

PozorováníVýznam k prošetření
100 ContinueKlient může pokračovat s tělem
Konečné odmítnutí před tělemOperace byla odmítnuta ve fázi hlaviček
Žádná očekávaná přechodná odpověďČekací politika klienta a zpracování na této cestě

curl nabízí samostatné nastavení čekání pro expect-continue. Pokud toto čekání libcurl vyprší bez očekávané odpovědi, tělo přesto odešle; vypršení samo o sobě neznamená selhání celého přenosu. Nastavení je oddělené od času povoleného pro celý přenos. Zvýšení posledního může stejnou počáteční pauzu ponechat nevysvětlenou.

Zjistěte také, která HTTP konverzace nese Expect. Při běžném CONNECT k cíli HTTPS probíhá výměna nahrávání webu uvnitř TLS; dopředná proxy jeho vnitřní hlavičku očekávání jednoduše neprohlíží. Cesta zachycení nebo přenosu v čistém textu je jiná.

Odstranění očekávání může být záměrná volba kompatibility, ale znamená, že klient může začít odesílat velké tělo, než se dozví o raném odmítnutí. Porovnejte toto chování se skutečným požadavkem. Nepopisujte historické obejití pro starou proxy jako univerzální pokyn odstranit hlavičku z každého nahrávání.

Související články