2015-06-17 20 views
8

Jak sugeruje tytuł, szukam informacji o celu pól nagłówka pseudo/dwukropka, tj. Chcę wiedzieć, dlaczego mamy drugi typ pola nagłówka ...Cel pól nagłówka Pseudo/Colon

Ponadto - wiem, że pola nagłówka pseudo/dwukropka są używane w http2 w miejsce wiadomości i linii statusu (^^^ powodem, dla którego nie wiem ^^^); ale czy są to nagłówki pseudo/dwukropka używane w http1 do przekazywania różnych informacji (od statusu i żądania)?

Odpowiedz

11

Celem pól pseudo nagłówka było ujednolicenie sposobu przesyłania informacji o żądaniu/odpowiedzi w SPDY i później w HTTP/2 (który opiera się na SPDY).

Gdy zaprojektowano SPDY (ale także HTTP/2), konieczne było przesłanie informacji o żądaniu lub odpowiedzi sformatowanych na różne sposoby.

Nagłówki HTTP to pary (klucz, wartość), co jest łatwe.

Istnieje jednak pojęcie metody HTTP. Tak się składa, że ​​jest to pierwszy znak linii zapytania, więc nie jest to krotka; jego klucz jest zdefiniowany przez jego pozycję (pierwszy token), a jego wartością są rzeczywiste znaki obecne w wierszu żądania, które tworzą pierwszy token.

To samo dotyczy celu żądania i wersji HTTP: są one drugim i trzecim tokenem wiersza żądania.

zatem koncepcyjnie żądania HTTP może być reprezentowany z parami w ten sposób, na przykład:

(method, GET) 
(target, /) 
(version, HTTP/1.1) 
(Connection, close) 
(Accept, *) 

Jednakże, „metoda”, „obiektem docelowym”, „Version” nie może być stosowany jako nagłówki HTTP ślizgowych , ponieważ nigdy nie były zarezerwowane jako standardowe nazwy nagłówków HTTP według specyfikacji HTTP, a ludzie mogli używać ich jako niestandardowych nazw nagłówków HTTP (wyobraź sobie interfejs API REST, używając nagłówka "wersja").

HTTP/2 potrzebował sposobu na przenoszenie tych par w jednorodny sposób, jako par, ponieważ to uprościłoby (bardzo dużo) protokół.

Stąd wprowadzenie specjalnych nazw dla dodatkowych informacji zawartych w wierszach zapytania i odpowiedzi. Ta dodatkowa informacja jest umieszczona w HTTP/1.1, ale normalna para w HTTP/2, czyniąc HTTP/2 bardziej jednorodnym pod tym względem: po prostu przenosi pary. Tak bardzo, że ramka HTTP/2, która przenosi informacje o żądaniach i odpowiedziach, jest taka sama i nazywa się tylko HEADERS.

Nazwy pseudo nagłówków, w których wybrano początek dwukropka, ponieważ byłby to niedozwolony znak dla nazwy nagłówka w HTTP/1.1. HTTP/1.1 nie używa pseudo-nagłówków.