De verbinding gaat open. Requestheaders vertrekken. Het bestand lijkt niet te bewegen. Eén verklaring is dat de client wacht op een reactie op Expect: 100-continue voordat hij de body verstuurt.

Het mechanisme laat een ontvanger een verzoek op basis van de headers weigeren voordat een mogelijk grote upload wordt verzonden. De gebruikelijke succesvolle volgorde is:

request headers → 100 Continue → request body → final response

100 is informatief: het laat de client doorgaan, maar betekent niet dat het bestand is opgeslagen of dat de applicatiebewerking is geslaagd. Een Git push die HTTP 417 teruggeeft, is een concreet geval van een mislukte verwachting.

Bepaal welk antwoord de client heeft ontvangen

WaarnemingWat te onderzoeken
100 ContinueDe client kan met de body doorgaan
Een definitieve afwijzing vóór de bodyDe bewerking werd in de headerfase geweigerd
Geen verwacht tussentijds antwoordHet wachtbeleid van de client en de afhandeling op dat pad

curl heeft een aparte instelling voor het wachten op expect-continue. Als dat libcurl-wachten verstrijkt zonder het verwachte antwoord, wordt de body alsnog verzonden; het verstrijken is niet automatisch een mislukte hele overdracht. De instelling staat los van de tijd die voor de volledige overdracht is toegestaan. Die laatste verhogen kan dezelfde eerste pauze onverklaard laten.

Stel ook vast welk HTTP-gesprek Expect vervoert. Bij gewone CONNECT naar een HTTPS-bestemming zit de uploaduitwisseling van de website in TLS; de forwardproxy inspecteert de interne verwachtingsheader niet zomaar. Een onderscheppingspad of een pad via platte tekst is anders.

De verwachting verwijderen kan een bewuste compatibiliteitskeuze zijn, maar het betekent dat de client een grote body kan gaan sturen voordat hij van een vroege afwijzing weet. Vergelijk dat gedrag met de werkelijke eis. Beschrijf een historische oplossing voor een oude proxy niet als een universele instructie om de header uit elke upload te verwijderen.

Gerelateerde artikelen