===== Protokół HTTP ===== Protokół HTTP (Hypertext Transfer Protocol) jest podstawowym protokołem komunikacyjnym używanym w Internecie do przesyłania danych między klientem (zwykle przeglądarką internetową) a serwerem. HTTP umożliwia przesyłanie różnorodnych zasobów, takich jak strony internetowe, obrazy, skrypty czy pliki, przez sieć. ==== Kluczowe cechy HTTP ==== * **Bezstanowość**: Protokół HTTP jest bezstanowy, co oznacza, że każda interakcja (żądanie i odpowiedź) jest traktowana oddzielnie, bez żadnej pamięci o poprzednich interakcjach. * **Model żądanie-odpowiedź**: HTTP działa na zasadzie modelu klient-serwer. Klient (np. przeglądarka) wysyła żądanie do serwera, a serwer odpowiada, dostarczając odpowiednie dane (np. stronę internetową). * **Zasoby**: Protokół HTTP jest wykorzystywany do przesyłania zasobów, które są identyfikowane za pomocą URI (Uniform Resource Identifier), najczęściej w formie URL (Uniform Resource Locator). ==== Metody HTTP ==== HTTP wykorzystuje różne metody, które określają typ żądania do serwera: * **GET**: Służy do pobierania zasobów z serwera. * **POST**: Wysyła dane do serwera, np. podczas wysyłania formularzy. * **PUT**: Używane do przesyłania zaktualizowanych danych na serwer. * **DELETE**: Używane do usuwania zasobów z serwera. ==== Statusy odpowiedzi ==== Odpowiedzi HTTP zawierają kody statusu, które informują o wyniku żądania: * **200 OK** – żądanie zakończone sukcesem. * **404 Not Found** – zasób nie został znaleziony. * **500 Internal Server Error** – błąd po stronie serwera. ==== Bezpieczeństwo ==== Standardowe HTTP nie zapewnia szyfrowania danych, ale istnieje jego bezpieczna wersja, **HTTPS** (HTTP Secure), która używa protokołu SSL/TLS do szyfrowania komunikacji między klientem a serwerem. ==== Serwery HTTP ==== Serwery HTTP to oprogramowanie, które obsługuje żądania HTTP i zwraca odpowiedzi użytkownikom. Serwer HTTP może być uruchomiony na dedykowanym sprzęcie lub na wirtualnym serwerze. Popularne serwery HTTP to: * **Apache HTTP Server** – jeden z najstarszych i najczęściej używanych serwerów HTTP, dostępny na wielu systemach operacyjnych. * **Nginx** – serwer HTTP, który jest znany z wysokiej wydajności, niskiego zużycia zasobów i jest wykorzystywany zarówno do serwowania statycznych plików, jak i jako reverse proxy. * **LiteSpeed** – komercyjny serwer HTTP, który oferuje lepszą wydajność w porównaniu do Apache, szczególnie w obsłudze dynamicznych stron internetowych. * **Caddy** – nowoczesny serwer HTTP, który automatycznie konfiguruje HTTPS przy pomocy protokołu ACME i Let’s Encrypt. Serwery HTTP działają na porcie 80 (dla HTTP) lub 443 (dla HTTPS) i są odpowiedzialne za interpretowanie żądań HTTP wysyłanych przez klienta oraz zwracanie odpowiednich zasobów, takich jak strony HTML, obrazy czy pliki multimedialne. ==== Przykład rozszerzenia protokołu==== === WebSockets (ws://, wss://) === Opis: Umożliwiają pełnodupleksową komunikację między klientem a serwerem przez jedno połączenie TCP. Zastosowanie: Czaty internetowe, gry online, powiadomienia w czasie rzeczywistym, dynamiczne aplikacje webowe. === HTTP/2 i HTTP/3 === Opis: Nowoczesne wersje HTTP poprawiające wydajność poprzez multiplexing i lepszą kompresję nagłówków. Zastosowanie: Optymalizacja ładowania stron, poprawa szybkości aplikacji webowych. === Server-Sent Events (SSE) === Opis: Technologia pozwalająca serwerowi na wysyłanie aktualizacji do klienta w czasie rzeczywistym. Zastosowanie: Powiadomienia w aplikacjach webowych, transmisje na żywo. === CORS (Cross-Origin Resource Sharing) === Opis: Mechanizm umożliwiający bezpieczny dostęp do zasobów z innych domen. Zastosowanie: API i aplikacje webowe działające w różnych domenach. === GraphQL over HTTP === Opis: Język zapytań dla API pozwalający klientowi pobierać tylko potrzebne dane. Zastosowanie: Optymalizacja transferu danych w aplikacjach mobilnych i webowych. === HTTP Range Requests === Opis: Pozwala na pobieranie tylko fragmentów zasobu zamiast całego pliku. Zastosowanie: Strumieniowanie multimedialne, pobieranie dużych plików. === OAuth over HTTP === Opis: Mechanizm autoryzacji pozwalający na logowanie przez zewnętrzne usługi (np. Google, Facebook). Zastosowanie: Logowanie do aplikacji bez podawania hasła, autoryzacja API. === JSON-RPC i XML-RPC over HTTP === Opis: Protokoły pozwalające na wykonywanie zdalnych operacji przy użyciu HTTP i formatów JSON/XML. Zastosowanie: Zdalne API i mikroserwisy. === HTTP PATCH === Opis: Metoda HTTP pozwalająca na częściową aktualizację zasobów. Zastosowanie: API REST, optymalizacja przesyłu danych. === ACME (Automatic Certificate Management Environment) === Opis: Protokół do automatycznego zarządzania certyfikatami SSL/TLS. Zastosowanie: Let’s Encrypt – automatyczna konfiguracja HTTPS. ===DAVFS=== DAVFS: [[serwery:protokol_webdav|WebDAV]] (Web Distributed Authoring and Versioning) ==Nextcloud== [[serwery:serwer_nextcloud|Nextcloud]] to oprogramowanie open-source do przechowywania, synchronizacji i współdzielenia plików w chmurze. Umożliwia użytkownikom tworzenie własnej, prywatnej chmury na serwerze, co daje pełną kontrolę nad danymi. Nextcloud obsługuje różne protokoły, w tym [[serwery:protokol_webdav|WebDAV]], co pozwala na łatwe montowanie przechowywanych danych i integrację z systemami operacyjnymi. Dodatkowo, Nextcloud oferuje funkcjonalności takie jak kalendarze, kontakty, edytory dokumentów, co czyni go kompleksowym rozwiązaniem do zarządzania plikami i współpracą. ==QOwnNotes== [[software:qownnotes|QOwnNotes]] to aplikacja open-source do tworzenia i zarządzania notatkami, która może być zintegrowana z usługą Nextcloud. Umożliwia tworzenie notatek w formacie Markdown, które są przechowywane w lokalnych plikach tekstowych, a następnie synchronizowane z serwerem Nextcloud za pomocą protokołu WebDAV. QOwnNotes pozwala na wygodne tworzenie i edytowanie notatek, które są dostępne na różnych urządzeniach dzięki synchronizacji z chmurą Nextcloud.