CodeGym/Blog Java/Random-PL/Część 3. HTTP/HTTPS
John Squirrels
Poziom 41
San Francisco

Część 3. HTTP/HTTPS

Opublikowano w grupie Random-PL
Ten materiał jest częścią serii „Wprowadzenie do rozwoju przedsiębiorstwa”. Poprzednie artykuły: Część 3. HTTP/HTTPS - 1Cześć! Dzisiaj poznamy protokoły HTTP i HTTPS. Ale najpierw wyjaśnijmy jedną kwestię: mówimy o protokołach przesyłania danych przez sieć na poziomie aplikacji modelu OSI. Być może pamiętasz, że model OSI poznaliśmy w jednym z poprzednich artykułów. Jeśli tego nie pamiętasz, oto on .

Co to jest protokół transmisji danych?

Nazywamy to uzgodnionym zestawem reguł, które umożliwiają programistom różnych usług wysyłanie informacji w formacie zrozumiałym dla innych. Na przykład możesz użyć Google Chrome, aby uzyskać informacje zarówno z Facebooka, jak i Twittera, ponieważ programiści przesyłają je za pomocą standardowego protokołu HTTP, który umożliwia przeglądarce ich przetwarzanie. Jednolite zasady są bardzo wygodne dla osób rozwijających część serwerową: istnieje wiele bibliotek, które mogą konwertować informacje i przesyłać je za pomocą odpowiedniego protokołu. HTTP został początkowo pomyślany jako protokół do wysyłania stron HTML. W ten sposób był używany przez długi czas, ale teraz programiści często używają go do wysyłania zarówno ciągów znaków, jak i plików multimedialnych. Ogólnie rzecz biorąc, protokół ten jest powszechnie akceptowany i wszechstronny oraz jest naprawdę łatwy w użyciu. A teraz zbadamy, jak go używać.

Struktura protokołu HTTP

Należy od razu zauważyć, że protokół HTTP składa się wyłącznie z tekstu. Najbardziej interesuje nas struktura tego tekstu. Każda wiadomość składa się z trzech części:
  1. Linia początkowa — definiuje niektóre dane porządkowe.
  2. Nagłówki — opisują parametry wiadomości.
  3. Treść — To jest treść wiadomości. Treść musi być oddzielona od nagłówków pustą linią.
Protokół HTTP służy do wysyłania żądań do serwera i odbierania odpowiedzi z serwera. Parametry żądań i odpowiedzi są nieco inne.

Oto jak wygląda proste żądanie HTTP:

GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Linia startu wskazuje:
  • GET — Metoda żądania
  • / — Ścieżka żądania
  • HTTP/1.1 — Wersja protokołu
Potem nadchodzą nagłówki:
  • Host — Host, do którego kierowane jest żądanie
  • User-Agent — Klient wysyłający żądanie
Brak treści wiadomości. W żądaniu HTTP wymagana jest tylko linia początkowa i nagłówek „Host”. Teraz spójrzmy na wszystko krok po kroku. Żądanie HTTP musi zawierać jakąś metodę. Jest ich dziewięć: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Najpopularniejsze to GET i POST. Na początek wystarczą te dwie metody. GET — Ta metoda żąda treści z serwera. W związku z tym żądania z metodą GET nie mają treści wiadomości. Ale jeśli chcesz, możesz przekazać parametry przez ścieżkę (w linii startowej) w następującym formacie:
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
gdzie codegym.cc to host, /send to ścieżka żądania, a ? jest separatorem wskazującym, że następują parametry zapytania. Na końcu wymienione są pary klucz-wartość („klucz=wartość”), oddzielone ampersandem. POST — Ta metoda publikuje informacje na serwerze. Żądanie POST może wysyłać różne rodzaje informacji: parametry jako pary klucz=wartość, JSON, kod HTML, a nawet pliki. Wszystkie informacje są przesyłane w treści wiadomości. Na przykład:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc

{
  "Id": 12345,
  "User": "John"
}
Żądanie jest wysyłane do codegym.cc/user/create/json, a wersja protokołu to HTTP/1.1. „Akceptuj” wskazuje format odpowiedzi, jaki klient oczekuje. „Content-Type” wskazuje format treści wiadomości wysłanej w żądaniu. „Długość treści” to liczba znaków w treści. Żądanie HTTP może zawierać wiele różnych nagłówków. Aby uzyskać więcej informacji, zapoznaj się ze specyfikacją protokołu .

Odpowiedzi HTTP

Po otrzymaniu żądania serwer przetwarza je i wysyła odpowiedź do klienta:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
Linia początkowa odpowiedzi zawiera wersję protokołu (HTTP/1.1), kod statusu (200) oraz opis statusu (OK). Jego nagłówki zawierają rodzaj i długość treści. Treść odpowiedzi zawiera kod HTML, który przeglądarka renderuje jako stronę HTML.

Kody statusu odpowiedzi

Jeśli chodzi o treść i nagłówki wiadomości, wszystko jest jasne, ale należy powiedzieć kilka słów o kodach statusu. Kody statusu odpowiedzi są zawsze trzycyfrowe. Pierwsza cyfra kodu wskazuje kategorię odpowiedzi:
  • 1xx — Informacyjny. Prośba została przyjęta. Serwer jest gotowy do kontynuowania.
  • 2xx — pomyślnie. Żądanie zostało przyjęte, zrozumiane i przetworzone.
  • 3xx — Przekierowanie. Aby przetworzyć żądanie, należy wykonać dodatkowe czynności.
  • 4xx — Błąd klienta. Żądanie zawiera błędy lub jest niezgodne z protokołem.
  • 5xx — Błąd serwera. Żądanie zostało utworzone poprawnie, ale serwer nie mógł go przetworzyć.
Druga i trzecia cyfra w kodzie oznaczają bardziej szczegółową odpowiedź. Na przykład:
  • 200 OK — Żądanie zostało odebrane i pomyślnie przetworzone.
  • 201 Utworzono — Żądanie zostało odebrane i pomyślnie przetworzone, w wyniku czego utworzono nowy zasób lub instancję.
  • 301 Przeniesiony na stałe — Żądany zasób został przeniesiony na stałe. Kolejne żądania do niego należy kierować z wykorzystaniem nowego adresu.
  • 307 Temporary Redirect — Zasób został tymczasowo przeniesiony. Na razie można uzyskać do niego dostęp za pomocą automatycznego przekierowania.
  • 403 Forbidden — Żądanie zostało zrozumiane, ale wymagana jest autoryzacja.
  • 404 Not Found — Serwer nie znalazł zasobu pod tym adresem.
  • 501 Not Implemented — Serwer nie obsługuje funkcji wymaganych do odpowiedzi na żądanie.
  • 505 HTTP Version Not Supported — Serwer nie obsługuje określonej wersji protokołu HTTP.
Oprócz kodu statusu odpowiedzi wysyłany jest również opis statusu. Pomaga to wyjaśnić, co oznacza każdy konkretny status. Protokół HTTP jest bardzo praktyczny: zapewnia dużą liczbę nagłówków, za pomocą których można zorganizować bardzo elastyczną komunikację między klientem a serwerem. Pełne rozważenie wszystkich nagłówków żądań i odpowiedzi, metod żądań i kodów statusu odpowiedzi zajęłoby za dużo miejsca na jeden artykuł. W razie potrzeby możesz przeczytać oficjalną specyfikację protokołu, który opisuje wszystkie niuanse. Zwyczajowo używa się protokołu HTTP na porcie 80, więc gdy zobaczysz adres URL, który kończy się na porcie 80, możesz mieć pewność, że musisz użyć protokołu HTTP, aby uzyskać do niego dostęp. Wraz z rozwojem technologii i zaczęciem przesyłania danych osobowych przez Internet, konieczne stało się zastanowienie, w jaki sposób zapewnić dodatkową ochronę informacji, które klient wysyła do serwera. Wynikiem tego myślenia był protokół HTTPS.

Różnica między HTTPS a HTTP

Pod względem składni protokół HTTPS jest identyczny z protokołem HTTP. Oznacza to, że używa tych samych linii początkowych i nagłówków. Jedyne różnice to dodatkowe szyfrowanie i domyślny port (443) . HTTPS jest szyfrowany między HTTP a TCP, czyli między warstwą aplikacji i transportu. Jeśli nie pamiętasz, co to oznacza, zapoznaj się z artykułem na temat modelu OSI . Dzisiejszym standardem szyfrowania jest TLS. Nie będziemy zbytnio zagłębiać się w ten temat, ale pamiętajmy, że szyfrowanie ma miejsce, zanim informacja dotrze do warstwy transportowej. W HTTPS absolutnie wszystkie informacje są szyfrowane, z wyjątkiem hosta i portu, do którego wysyłane jest żądanie. Przełączenie serwera na używanie protokołu HTTPS zamiast HTTP nie wymaga zmiany kodu serwera. Ta funkcja jest włączona w kontenerach serwletów, co omówimy w kolejnych artykułach. I to wszystko na dzisiaj. Właściwie, poczekaj chwilę. Aby uzyskać dostęp do niektórych żądań HTTP, otwórz Google Chrome, naciśnij klawisz F12 i wybierz kartę „Sieć”. Tutaj zostaną wyświetlone wszystkie żądania i odpowiedzi wysłane/otrzymane przez Twoją przeglądarkę. Część 4. Podstawy Mavena Część 5. Serwlety i Java Servlet API. Pisanie prostej aplikacji webowej Część 6. Kontenery serwletów Część 7. Wprowadzenie do wzorca MVC (Model-View-Controller)
Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy