Negocjacja treści
Protokół HTTP umożliwia negocjację treści między klientem i serwerem. Całość opiera się na dość prostych zasadach:
-
Klient wysyła zapytanie o zasób dodając do nagłówków informacje o swoich preferencjach. Do każdej preferowanej cechy może dodać jej stopień preferowania w postaci „cecha;q=wartość”. Wartość jest liczbą rzeczywistą z przedziału [0.0, 1.0], gdzie 0.0 oznacza brak zgodności z preferencjami, a 1.0 całkowitą zgodność.
-
Serwer po pobraniu zapytania, do informacji od klienta może dobrać najlepiej dopasowany do nich zasób, z uwzględnieniem informacji przechowywanych w swoich ustawieniach. Nie ma on jednak obowiązku zwrócenia zasobu dokładnie dopasowanego do wymagań przedstawionych przez klienta i równie dobrze może pominąć jego preferencje.
Klient wysyłając zapytanie do serwera może przedstawić swoje preferencje odnośnie:
-
typu MIME zasobu (np. format graficzny obrazka) - „Accept”
-
kodowania znaków zasobu (np. iso-8859-2, utf-8) - „Accept-Charset”
-
sposobu kompresji zasobu (np. gzip, compress) - „Accept-Encoding”
-
języka zasobu (np. en-gb, pl-pl) - „Accept-Language”
-
typu zakresów dla zapytań częściowych (partial GET) (np. bytes, none) - „Accept-Ranges”
Serwer HTTP 