2013-06-20 6 views
6

Wysyłam duże ilości danych w mojej odpowiedzi na klienta w formacie kodowanego transferu w formacie chunked.Odpowiedź wysyłana w kodowanym kodowaniu transferowym i informująca o błędach występujących po wysłaniu niektórych danych.

Jak powinienem radzić sobie z błędami, które wystąpią w trakcie pisania odpowiedzi na temat błędu: w połowie drogi?

Chciałbym wiedzieć, czy istnieje jakakolwiek praktyka zalecana przez specyfikację HTTP w odniesieniu do tego dla klientów, aby wiedzieć, że rzeczywiście odpowiedź nie jest udana, ale że serwer napotkał na jakiś problem.

Odpowiedz

5

Po rozpoczęciu wysyłania nagłówków HTTP do klienta nie można wysłać niczego innego. Musisz zakończyć wysyłanie odpowiedzi, która ma zostać wysłana, tzn. Dane posegregowane i powiązane nagłówki. Jeśli w tym czasie wystąpi błąd, nie ma możliwości zgłoszenia tego błędu klientowi. Wszystko, co możesz zrobić, to zamknąć połączenie. Albo klient nie odbierze wszystkich nagłówków, albo nie otrzyma końcowego fragmentu o długości 0 na końcu odpowiedzi. W obu przypadkach klient może wiedzieć, że serwer napotkał błąd podczas wysyłania.

+0

Dzięki Remy. Tak ... dobrze, mam świadomość, że nagłówki są wysyłane jako pierwsze i nie ma możliwości ich modyfikacji, gdy zaczniemy pisać do strumienia. Jak zasugerowałeś, obecnie zamykam połączenie, ale chciałem się dowiedzieć, czy istnieje inny sposób, w jaki specyfikacja HTTP mówi o tym, jak można poinformować o tym klienta. Ciekawa o długości 0, sprawdzę, czy mogę coś zrobić w tym obszarze. –

+0

Są tylko dwa sposoby, aby poinformować klienta, że ​​coś poszło nie tak. Zamknij połączenie (co powinieneś zrobić), ponieważ cokolwiek innego niż odebranie ostatniego fragmentu o długości 0 jest błędem, lub po prostu umieść niestandardowy nagłówek HTTP w podzielonej stopce po wysłaniu ostatniej porcji od 0 do 15. Większość klientów prawdopodobnie zignoruje taki nagłówek, ale jeśli piszesz własnego klienta, możesz poszukać tego nagłówka. –

+0

Sure..thanks! Remy ... –

Powiązane problemy