Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 8759|Odpowiedź: 0

Szczegółowa interpretacja długości treści w protokole HTTP

[Skopiuj link]
Opublikowano 24.09.2019 15:53:29 | | |
Długość treści jest używana do opisu długości transferu tła wiadomości. W protokole HTTP istnieje różnica między długością jednostki wiadomości a długością transmisji tej jednostki; na przykład przy kompresji gzip długość jednostki wiadomości to długość przed kompresją, a długość transmisji jednostki wiadomości to długość po kompresji gzip.

W konkretnych interakcjach HTTP sposób uzyskiwania przez klienta długości wiadomości opiera się głównie na następujących regułach:

Jeśli odpowiedź to 1xx, 204, 304 lub żądanie głowy, treść jednostki wiadomości jest bezpośrednio ignorowana.
Jeśli istnieje kodowanie transferowe, preferowana jest metoda w kodowaniu transferowym, aby znaleźć odpowiednią długość. Na przykład model Chunked.
"Jeśli w głowie jest Content-Length, to ta Content-Length reprezentuje zarówno długość ciała, jak i długość transmisji. Jeśli długość jednostki i długość transferu nie są równe (np. ustawione jest kodowanie transferowe), to nie można ustawić długości zawartości.Jeśli zostanie ustawione Transfer-Encoding (Transfer-Enkodiranie), to Content-Length zostanie zignorowane”。 Zaletą tego tłumaczenia zdań jest to, że jest tylko jeden punkt: przy kodowaniu transferowym nie może istnieć długość treści.
Transmisja zasięgu. Nie zwracałem uwagi, nie czytałem tego szczegółowo, :)
Zamknięcie połączenia przez serwer determinuje długość przesyłanej wiadomości. (Zgłaszający nie może wskazać końca ciała żądania poprzez zamknięcie połączenia, ponieważ serwer nie miałby szansy na dalszą odpowiedź.) Ta sytuacja głównie odpowiada krótkim połączeniom, czyli trybowi non-keep-alive.
HTTP 1.1 musi obsługiwać tryb chunk. Ponieważ gdy długość wiadomości jest niepewna, sytuację tę można rozwiązać za pomocą mechanizmu chunk.
W nagłówku zawierającym treść wiadomości, jeśli istnieje pole długości treści, odpowiadająca wartość pola musi dokładnie odpowiadać długości tematu wiadomości.
"Długość encji wiadomości to długość ciała wiadomości przed zastosowaniem jakichkolwiek kodów transferowych"
CzyliJeśli jest fragment, nie może być długości treści

Mechanizm trwałego połączenia HTTP/1.0 został wprowadzony później i jest realizowany za pomocą nagłówka Connection: keep-alive, który może być używany zarówno przez serwer, jak i klienta, aby przekazać sobie nawzajem, że nie muszą rozłączać połączenia TCP po przesłaniu danych do późniejszego użytku.HTTP/1.1 wymaga, aby wszystkie połączenia były trwałeChyba że wyraźnie dodasz Connection: blisko nagłówka。 W rzeczywistości pole nagłówka Connection w HTTP/1.1 nie ma już wartości keep-alive, ale z powodów historycznych wiele serwerów i przeglądarek nadal zachowuje zwyczaj wysyłania długich połączeń Connection: keep-alive do HTTP/1.1.

W rzeczywistości ostatnie kilka można niemal zignorować, a krótkie podsumowanie brzmi następująco:


1. Długość treści: Jeśli istnieje i jest ważna, musi być dokładnie taka sama jak długość transmisji zawartości wiadomości. (Testowano, by skracać, jeśli jest zbyt krótko i zbyt długo, by spowodować przerwę.) )
2. Jeśli istnieje Transfer-Encoding (fokus jest podzielony na fragmenty), w nagłówku nie może być Content-Length i zostanie on zignorowany.
3. Jeśli użyte jest krótkie połączenie, długość transmisji wiadomości można określić bezpośrednio poprzez zamknięcie połączenia przez serwer. (To łatwe do zrozumienia)
W połączeniu z innymi funkcjami protokołu HTTP, na przykład, Http1.1 nie wspierał funkcji Keep Alive. Można wyciągnąć następujące wnioski:
1. W wersjach Http 1.0 i wcześniejszych pole długości treści jest opcjonalne.
2. W wersjach http1.1 i nowszych. Jeśli pozostajesz przy życiu, to długość zawartości i fragment muszą być jednym z tych dwóch. Jeśli nie jest to Keep Alive, to jest to samo co http1.0. Długość treści.





Poprzedni:"Node.js: Let's Dozen C++ Extensions" wersja pdf zeskanowana [146MB]
Następny:Długość treści protokołu HTTP
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com