Pauze pri HTTP otpremljivanju i Expect: 100-continue
Prepoznajte razmjenu Expect: 100-continue i razlikujte njezinu kratku točku odluke od otpremanja koje je stalo tijekom prijenosa podataka.
Veza se otvara. Zaglavlja zahtjeva odlaze. Čini se da se datoteka ne pomiče. Jedno objašnjenje jest da klijent čeka odgovor na Expect: 100-continue prije nego pošalje svoje tijelo.
Mehanizam omogućuje primatelju da odbije zahtjev na temelju zaglavlja prije nego što se pošalje potencijalno veliko otpremanje. Uobičajen uspješan slijed je:
request headers → 100 Continue → request body → final response100 je informativan: dopušta klijentu da nastavi, ali ne znači da je datoteka pohranjena ili da je operacija aplikacije uspjela. Git push koji vraća HTTP 417 jedan je konkretan slučaj neuspjelog očekivanja.
Utvrdite koji je odgovor klijent primio
| Zapažanje | Značenje koje treba istražiti |
|---|---|
| 100 Continue | Klijent može nastaviti s tijelom |
| Konačno odbijanje prije tijela | Operacija je odbijena u fazi zaglavlja |
| Nema očekivanog privremenog odgovora | Politika čekanja klijenta i postupanje na tom putu |
curl nudi zasebnu postavku čekanja za expect-continue. Ako to čekanje libcurla istekne bez očekivanog odgovora, tijelo se ipak šalje; istek nije automatski neuspješan cijeli prijenos. Postavka je odvojena od vremena dopuštenog za potpuni prijenos. Povećanje potonjeg može ostaviti istu početnu pauzu neobjašnjenom.
Utvrdite i koji HTTP razgovor nosi Expect. Kod običnog CONNECT-a na HTTPS odredište, razmjena otpremanja web-mjesta nalazi se unutar TLS-a; prednji proxy ne pregledava jednostavno njegovo unutarnje zaglavlje očekivanja. Put presretanja ili prijenosa čistim tekstom je drugačiji.
Uklanjanje očekivanja može biti namjeran izbor kompatibilnosti, ali znači da klijent može početi slati veliko tijelo prije nego sazna za rano odbijanje. Usporedite to ponašanje sa stvarnim zahtjevom. Ne opisujte povijesno zaobilaženje za stari proxy kao univerzalnu uputu za uklanjanje zaglavlja iz svakog otpremanja.