Pauzy przesyłania HTTP i Expect: 100-continue
Rozpoznaj wymianę Expect: 100-continue i odróżnij jej krótki punkt decyzyjny od przesyłania, które utknęło podczas transferu danych.
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
| Obserwacja | Co należy zbadać |
|---|---|
| 100 Continue | Klient może kontynuować z treścią |
| Ostateczne odrzucenie przed treścią | Operacja została odrzucona na etapie nagłówków |
| Brak oczekiwanej odpowiedzi pośredniej | Polityka 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.