Połączenie zostaje otwarte. Nagłówki żądania wychodzą. Plik wygląda, jakby się nie poruszał. Jedno z wyjaśnień jest takie, że klient czeka na odpowiedź na Expect: 100-continue przed wysłaniem treści.

Mechanizm pozwala odbiorcy odrzucić żądanie na podstawie jego nagłówków, zanim zostanie wysłane potencjalnie duże przesyłanie. Zwykła udana sekwencja to:

request headers → 100 Continue → request body → final response

100 jest informacyjne: pozwala klientowi kontynuować, ale nie oznacza, że plik został zapisany albo że operacja aplikacji się powiodła. Git push zwracający HTTP 417 to jeden konkretny przypadek niespełnionego oczekiwania.

Ustal, jaką odpowiedź otrzymał klient

ObserwacjaCo należy zbadać
100 ContinueKlient może kontynuować z treścią
Ostateczne odrzucenie przed treściąOperacja została odrzucona na etapie nagłówków
Brak oczekiwanej odpowiedzi pośredniejPolityka oczekiwania klienta i obsługa na tej ścieżce

curl udostępnia osobne ustawienie oczekiwania expect-continue. Jeśli to oczekiwanie libcurl wygaśnie bez oczekiwanej odpowiedzi, treść i tak zostaje wysłana; wygaśnięcie samo w sobie nie jest nieudanym całym transferem. Ustawienie jest oddzielne od czasu dozwolonego na cały transfer. Zwiększenie tego drugiego może pozostawić tę samą początkową pauzę bez wyjaśnienia.

Ustal też, która rozmowa HTTP przenosi Expect. Przy zwykłym CONNECT do miejsca docelowego HTTPS wymiana przesyłania witryny odbywa się wewnątrz TLS; proxy przekazujące nie sprawdza po prostu wewnętrznego nagłówka oczekiwania. Ścieżka przechwytywania lub przekazywania tekstem jawnym jest inna.

Usunięcie oczekiwania może być świadomym wyborem zgodności, ale oznacza, że klient może zacząć wysyłać dużą treść, zanim dowie się o wczesnym odrzuceniu. Porównaj to zachowanie z rzeczywistym wymaganiem. Nie opisuj historycznego obejścia dla starego proxy jako uniwersalnej instrukcji usuwania nagłówka z każdego przesyłania.

Powiązane artykuły