O jakich ukrytych funkcjach protokołu HTTP warto wspomnieć?
Przez ukryte funkcje rozumiem funkcje, które są już częścią standardu, ale są raczej nieznane lub nieużywane.
Tylko jedna funkcja na odpowiedź.
To musi być kod statusu 418 I'm a teapot , część protokołu Hyper Text Coffee Pot Control Protocol (rozszerzenie HTTP). Rozśmiesza mnie za każdym razem.
2.3.2 418 Jestem czajniczkiem
Każda próba zaparzenia kawy czajnikiem powinna skutkować wyświetleniem kodu błędu „418 Jestem czajniczkiem”. Powstały w ten sposób korpus jednostki MOŻE być krótki i tęgi.
Fakt, że strona odsyłająca została błędnie wpisana i zdecydowano, że należy ją zachować.
źródło
Oczywista odpowiedź: metody PUT, DELETE, TRACE, OPTIONS, CONNECT
Większość ludzi wie o metodach GET i POST, ponieważ właśnie tego używają podczas tworzenia formularzy. Przeglądarki również często używają HEAD. Inne metody są znacznie mniej znane; są najczęściej używane przez bardziej specyficzne aplikacje.
źródło
Czy ktoś kiedykolwiek widział wymaganą płatność 402 ?
źródło
204 Brak treści
Myślałem, że 204 jest tylko wtedy, gdy nie masz treści do wyświetlenia, ale specyfikacja wygląda na to, że istnieje dodatkowe zachowanie, które polega na tym, że agent użytkownika „nie zmienia widoku dokumentu”.
Zgodnie z HOWTO: Skonfiguruj Apache, aby zwracał HTTP 204 (brak treści) dla AJAX
Ponadto 204 No Content proponuje, że jest to dobra technika w przypadku „błędów internetowych” lub „sygnałów nawigacyjnych”, jeśli chcesz zaoszczędzić na każdym ostatnim bajcie ruchu sieciowego, jaki możesz.
źródło
Kod odpowiedzi
410 Gone
:Pająki sieciowe (w szczególności Google) usuwają indeksowanie (zwykle podczas następnego indeksowania) strony, która zaczyna zwracać 410.
źródło
W zawartości dynamicznej użyj nagłówka Last_Modified lub ETag
Czasami masz dynamiczną zawartość, która może być duża i / lub kosztowna do wygenerowania i która może się nie zmieniać w zależności od żądania. Możesz dodać nagłówek Last_Modified lub ETag do wygenerowanej odpowiedzi.
Na początku drogiego kodu dynamicznego możesz użyć If_Modified_Since lub If_None_Match, aby określić, czy żądający treści już ma, jest nadal aktualny. Jeśli zmieni status odpowiedzi na „304 Unmodified” i zakończ żądanie.
Niektóre technologie po stronie serwera formalnie zapewniają takie funkcje, ale możesz to zrobić nawet w skromnym ASP-Classic.
Zauważ, że różni się to od ustawiania nagłówków Cache-Control, Expires tym, że zapewnia klientowi zawsze aktualne informacje na żądanie.
źródło
Możesz zażądać wznowienia (dużej) odpowiedzi HTTP (np. Pobrania pliku), używając nagłówków
Range
iIf-Range
żądań z odpowiednio określonym zakresem bajtów i unikalnym identyfikatorem pliku lub znacznikiem czasu modyfikacji pliku. Jest to możliwe, jeśli serwer wysłał nagłówkiAccept-Ranges: bytes
iETag
lubLast-Modified
odpowiedzi w odpowiedzi początkowej z odpowiednio powiadomieniem, że serwer obsługuje żądania zakresów bajtów, unikalnym identyfikatorem pliku i znacznikiem czasu modyfikacji pliku.Początkowa odpowiedź może wyglądać następująco (
ETag
zazwyczaj składa się z nazwy pliku, rozmiaru i znacznika czasu ostatniej modyfikacji):Gdy pobieranie zostanie przerwane na przykład na 1 KB (1024 bajty), klient może je wznowić w następujący sposób:
Który powinien zwrócić tę odpowiedź z odpowiednimi bajtami w treści:
źródło
ReST próbuje wykorzystać HTTP do granic swoich możliwości jako protokół interfejsu.
To nie jest ukryta funkcja , ale patrząc na dobrze zdefiniowane API ReST, można dość dobrze zrozumieć, jak powinien działać HTTP i znaleźć wspaniałe przykłady tego, co można osiągnąć za pomocą prostej kombinacji metod HTTP, kodów stanu i nagłówków do i od.
źródło
Trailer (w przeciwieństwie do Header)
źródło
Protokół umożliwia definiowanie własnych pól niestandardowych. Mogą one służyć do przenoszenia innych informacji, jeśli nie chcesz używać do tego plików cookie.
źródło
Status HTTP 100 (kontynuacja)
Klient może wysłać komunikat żądania z treścią żądania, aby określić, czy serwer pochodzenia jest skłonny zaakceptować żądanie.
W niektórych przypadkach wysłanie treści przez klienta może być niewłaściwe lub wysoce nieefektywne, jeśli serwer odrzuci wiadomość bez patrzenia na treść.
Może być używany do unikania ruchu od nieuczciwych klientów ... i / lub gdy przepustowość jest cennym towarem.
Jednak w celu pełnego wykorzystania tej funkcji istnieją pewne kryteria dotyczące klienta, serwerów i serwerów proxy HTTP1.1. Więcej informacji na temat połączeń HTTP można znaleźć w dokumencie HTTP / 1.1 RFC 2616 .
źródło
Kody statusu :
http://www.domain.invalid/index.php?id=44
, jeśli query (id=44
) nie może zwrócić zasobu, dlaczego nie zwrócić kodu stanu404
?http://www.domain.invalid/index.php?id=foo
id
400
200
(ok, nie ma problemu, robisz to dobrze)401
?Tak, kody statusu wydają się być rodzajem tajnej funkcjonalności HTTP dla niektórych twórców stron internetowych ... Ale zastanawiam się, czy najbardziej okultystyczną ze wszystkich "funkcji" tego protokołu nie jest jego RFC !
źródło
401
dotyczy tylko uwierzytelniania HTTP, a nie innych rodzajów. Afaik powoduje, że większość przeglądarek prosi użytkownika o hasło http.HTTP-Authentication
... ^^ Czy tak trudno jest z niej korzystać zamiast wymyślać koło na nowo?.htaccess
pliki Apache - które prawdopodobnie są tylko webmaster może aktualizować. W związku z tym uwierzytelnianie HTTP nie jest w rzeczywistości odpowiednie do zarządzania prawami użytkownika aplikacji i logowaniem / wylogowywaniem.HTTP-Authentication
, a nawet PHP jest w stanie obsłużyćHTTP-Authentication
( php.net/manual/en/features.http-auth.php ). Jeśli jesteś programistą WWW, musisz opanować podstawy administracji serwerami, tylko ze względów bezpieczeństwa! Jako webmaster musi mieć umiejętności webmastera / sysadmina, może z łatwością wykonywać te zadania.