Nagłówek aktualizacji HTTP / 1.1 - HTTP/1.1 Upgrade header
HTTP |
---|
Metody żądania |
Pola nagłówka |
Kody stanu |
Metody kontroli dostępu do bezpieczeństwa |
Luki w zabezpieczeniach |
Nagłówka Upgrade pole to pole nagłówka HTTP wprowadzony w HTTP / 1.1 . Podczas wymiany klient rozpoczyna od wysłania żądania w postaci zwykłego tekstu , które jest później aktualizowane do nowszej wersji protokołu HTTP lub przełączane na inny protokół. Klient musi zażądać aktualizacji połączenia; jeśli serwer chce wymusić aktualizację, może wysłać 426 Upgrade Required
odpowiedź. Klient może następnie wysłać nowe żądanie z odpowiednimi nagłówkami aktualizacji, nie wyłączając połączenia.
Używaj z TLS
Jednym z zastosowań jest rozpoczęcie żądania na normalnym porcie HTTP, ale przełączenie na Transport Layer Security (TLS). W praktyce takie użycie jest rzadkie, a HTTPS jest znacznie bardziej powszechnym sposobem inicjowania szyfrowanego HTTP.
Serwer zwraca 426
kod stanu, aby ostrzec starszych klientów, że błąd był związany z klientem ( 400
kody poziomu wskazują awarię klienta).
Ta metoda ustanowienia bezpiecznego połączenia jest korzystna, ponieważ:
- Nie wymaga niechlujnego i problematycznego przekierowywania adresów URL po stronie serwera;
- Umożliwia wirtualny hosting zabezpieczonych witryn internetowych (chociaż protokół HTTPS umożliwia to również przy użyciu wskaźnika nazwy serwera ); i
- Zmniejsza ryzyko dezorientacji użytkowników, zapewniając pojedynczy sposób dostępu do określonego zasobu.
Jeśli te same zasoby są dostępne z serwera zarówno za pośrednictwem zaszyfrowanych bezpiecznych środków, jak i niezaszyfrowanych, wyraźnych środków, pośrednik może utrzymywać niezaszyfrowane i nieuwierzytelnione połączenie z klientem, utrzymując jednocześnie szyfrowane połączenie z serwerem.
Wady tej metody obejmują:
- Klient nie może określić wymogu bezpiecznego protokołu HTTP w identyfikatorze URI (chociaż klient może tego zażądać podczas negocjacji aktualizacji); i
- Ponieważ protokół HTTP jest definiowany na podstawie przeskoków , może być wymagane tunelowanie HTTP w celu ominięcia serwerów proxy.
Używaj z WebSocket
WebSocket wykorzystuje również ten mechanizm do zestawiania połączenia z serwerem HTTP w kompatybilny sposób. Protokół WebSocket składa się z dwóch części: uzgadniania w celu ustanowienia zaktualizowanego połączenia, a następnie faktycznego przesyłania danych. Po pierwsze, klient żąda połączenia websocket za pomocą Upgrade: WebSocket
i Connection: Upgrade
nagłówków, wraz z kilkoma nagłówkami protokół specyficznych ustalić wersję używanego i skonfigurować uzgadniania. Serwer, czy obsługuje protokół, odpowiedzi z tego samego Upgrade: WebSocket
i Connection: Upgrade
nagłówków i uzupełnia dłoni. Po pomyślnym zakończeniu uzgadniania rozpoczyna się przesyłanie danych.
Używaj z HTTP / 2
Mechanizm HTTP Upgrade jest używany do ustanowienia protokołu HTTP / 2 zaczynając od zwykłego HTTP. Klient rozpoczyna połączenie HTTP / 1.1 i wysyła Upgrade: h2c
nagłówek. Jeśli serwer obsługuje protokół HTTP / 2, odpowiada kodem stanu protokołu HTTP 101 Switching Protocol . Mechanizm aktualizacji HTTP jest używany tylko w przypadku zwykłego tekstu HTTP2 (h2c). W przypadku protokołu HTTP2 przez TLS (h2) zamiast tego używane jest rozszerzenie protokołu ALPN TLS.