Menu
Jest wolny
rejestracja
Dom  /  Multimedia/ Co to jest transfer danych metodą get. Atrybut i metoda działania

Co to jest metoda przesyłania danych. Atrybut i metoda działania

Istnieją dwa pojęcia, które są wspólne dla prawie wszystkich programów — przetwarzanie danych wejściowych i wyprowadzanie wyników. Na tej stronie skupimy się na obsłudze danych wejściowych programów CGI. Po pierwsze, skąd pochodzi dane wejściowe, a po drugie, w jaki sposób dane wejściowe są przekazywane do serwera. Aby pisać efektywne programy CGI, musisz mieć jasne zrozumienie tych rzeczy.

Trochę o HTTP

Serwer akceptuje trzy typy żądań: GET, POST i HEAD. Żądanie programu do serwera WWW wygląda tak:

POBIERZ /index.html HTTP / 1.0

Pierwsza część, w tym przypadku GET, to metoda żądania, druga, index.html, to żądany adres URL, a trzecia, HTTP / 1.0, to protokół używany przez klienta.

Dwie główne metody żądania to GET i POST. Są to te same metody, które są dostępne podczas tworzenia formularza. Metoda HEAD jest rzadko używana przez przeglądarkę, ponieważ żąda tylko nagłówka odpowiedzi, a treść odpowiedzi nie jest w tym przypadku wysyłana. Na przykład, aby sprawdzić, czy strona się zmieniła, przeglądarka może poprosić o nagłówek, ale nie generuje to pełnej wymiany danych.

Metoda GET

Domyślnie żądanie korzysta z metody GET. Metoda POST jest używana tylko wtedy, gdy jest to wyraźnie określone w żądaniu formularza. Dla programisty CGI bardzo ważne jest, aby zrozumieć, że gdy wykonywane jest żądanie GET, dane formularza są wysyłane na serwer wraz z adresem URL. Serwery internetowe obsługujące CGI kopiują te dane do Zmienna środowiskowa o nazwie QUERY_STRING. Następnie program CGI jest odpowiedzialny za pobieranie danych ze zmiennej środowiskowej i ich przetwarzanie.

Adres URL z ciągiem zapytania wygląda tak:

Http://www.nazwa-domena.com/login.pl?nick=maks&psw=parol

Znak? oddziela ciąg zapytania od rzeczywistego adresu URL zasobu; nick i psw są zmiennymi przekazywanymi do serwera, maks i parol są odpowiednio ich wartościami.

Metoda POST

Metoda POST jest używana, gdy jest wyraźnie określona w atrybucie METHOD formularza. W przeciwieństwie do metody GET, POST nie umieszcza danych w adresie URL, ale w treści żądania. Żądanie POST jest bardzo podobne do odpowiedzi HTTP. Pierwsza linia to standardowe żądanie HTTP, które określa metodę POST. Może zawierać niezbędne dodatkowe nagłówki, oddzielone od treści żądania pustą linią.

Podczas korzystania z metody POST treść żądania jest przekazywana do programu jako standardowe wejście.

Wybór między GET i POST

Oczywiste jest, że podczas opracowywania formularzy programista CGI stanie przed pytaniem, której z tych metod użyć. W większości przypadków obie metody będą działać i obie będą działać dobrze. Zdarzają się jednak sytuacje, w których zastosowanie takiej czy innej metody daje pewne korzyści.

Przyjrzyjmy się kilku sytuacjom, w których warto preferować metodę GET lub POST.

  • Jeśli chcesz, aby Twój program był wywoływany przez odwołanie, preferowana powinna być metoda GET.
  • Jeśli nie chcesz, aby argumenty przekazywane do twojego programu były zapisywane w pliku dziennika serwera, użyj metody POST. Na przykład, jeśli formularz wymaga nazwy użytkownika i hasła, prawdopodobnie nie chcesz, aby nazwy i hasła były zapisywane w pliku raportu. Ponadto nie jest rozsądne przekazywanie hasła jako części adresu URL.
  • Jeśli Twój formularz ma znaczne wymiary, na przykład zawiera pola tekstowe z notatkami i komentarzami, powinieneś użyć metody POST. Ogólnie rzecz biorąc, w tym przypadku możesz użyć metody GET, ale wtedy możesz napotkać ograniczenia rozmiaru adresu URL, które są różne dla różnych system operacyjny i przeglądarki (ograniczone wielkością zmiennych środowiskowych). Łatwiej jest skorzystać z metody POST.
  • Jeśli formularz zawiera pole pliku, użyj metody POST. Dodatkowo w tym przypadku należy ustawić wartość atrybutu ENCTYPE na multipart / form-data.

POBIERZ metody i POST do HTTP i HTTPS to dwie najpopularniejsze metody używane do przesyłania danych od klienta do serwera za pomocą protokołu HTTP (Hypertext Transfer Protocol). Zarówno GET, jak i POST mogą być używane do wysyłania żądania i odbierania odpowiedzi, ale istnieje między nimi znacząca różnica.

Różnica między żądaniami GET i POST w HTTP lub HTTPS jest popularnym pytaniem w każdej rozmowie z programistami internetowymi. Ponieważ HTML jest niezależny od technologii serwera WWW, takiej jak Java, ASP czy PHP, a HTTP jest głównym protokołem w przestrzeni internetowej, nie można wyraźnie zignorować znaczenia zrozumienia metod GET i POST. W tym artykule przyjrzymy się, czym jest metoda HTTP GET, czym jest metoda HTTP POST, kiedy należy użyć konkretnego żądania i jaka jest między nimi różnica. Przeanalizujmy każdą koncepcję osobno.

Co to jest HTML?

HTML to język używany do tworzenia stron internetowych. Hipertekst odnosi się do hiperłączy, które może zawierać strona HTML. Język znaczników odnosi się do sposobu, w jaki znaczniki są używane do definiowania układu strony i elementów na stronie.
Poniżej znajduje się Przykład HTML który służy do zdefiniowania podstawowej strony internetowej z nagłówkiem i jednym akapitem tekstu:



<Голова>
<Название>TechTerms.com

<Тело>

To jest przykład akapitu w HTML.

Pierwsza linia określa rodzaj treści zawartej w dokumencie., oraz które są zawarte w powyższym przykładzie. Tytuł strony, metadane i linki do pliku kotwicy są umieszczane między Rzeczywista zawartość strony znajduje się między tagami .

W ciągu ostatnich kilkudziesięciu lat sieć przeszła wiele zmian, ale HTML zawsze był głównym językiem używanym do tworzenia stron internetowych. Co ciekawe, podczas gdy strony internetowe stały się bardziej zaawansowane i interaktywne, HTML stał się prostszy. Jeśli porównasz źródło strony HTML5 z podobną stroną napisaną w HTML 4.01 lub XHTML 1.0, na stronie HTML5 będzie mniej kodu. Dzieje się tak, ponieważ współczesny HTML wykorzystuje kaskadowe arkusze stylów lub JavaScript do formatowania prawie wszystkich elementów na stronie.

Wiele dynamicznych witryn internetowych generuje strony internetowe w locie przy użyciu języka skryptowego po stronie serwera, takiego jak PHP lub ASP. Jednak nawet strony dynamiczne muszą być sformatowane za pomocą HTML. Dlatego języki skryptowe często generują kod HTML, który jest wysyłany do przeglądarki internetowej.

Hypertext Transfer Protocol (HTTP) jest przeznaczony do komunikacji między klientami a serwerami i działa jak protokół żądanie-odpowiedź.

Klientem może być przeglądarka internetowa, a serwerem aplikacja na komputerze hostującym serwis.

Klient (przeglądarka) wysyła do serwera żądanie HTTP, serwer zwraca odpowiedź, która zawiera informacje o statusie żądania, a także może zawierać żądaną treść.

Dwie metody żądania GET i POST

Dwie powszechnie używane metody odpowiedzi na żądanie między klientem a serwerem:

    GET - żąda danych z określonego zasobu;

    POST — wysyła dane do przetworzenia do określonego zasobu.

Tłumaczenie GET i POST dosłownie oznacza pobieranie i przetwarzanie końcowe.

Więcej o HTTP

HTTP to protokół używany do przesyłania danych przez Internet. Jest częścią pakietu protokołu internetowego i definiuje polecenia i usługi używane do przesyłania danych na stronę internetową.

HTTP używa modelu serwer-klient. Klientem może być komputer domowy, laptop lub urządzenie przenośne... Serwer HTTP jest zwykle hostem internetowym z oprogramowanie serwer WWW, taki jak Apache lub IIS. Gdy użytkownik uzyskuje dostęp do strony internetowej, przeglądarka wysyła żądanie do odpowiedniego serwera WWW i odpowiada kodem stanu HTTP. Jeśli adres URL jest prawidłowy, a połączenie jest zapewnione, serwer wyśle ​​stronę internetową i powiązane pliki do przeglądarki.

Typowe kody stanu HTTP obejmują:

    200 - udane żądanie (strona istnieje);

    301 - porusza się stale (często przekierowuje do nowego adresu URL);

    401 - nieautoryzowane żądanie (wymagana autoryzacja);

    500 — Błąd wewnętrzny serwer (często nazywany błędna konfiguracja serwer).

POST i GET w HTTP

HTTP definiuje polecenia GET i POST, które są używane do przetwarzania formularzy przesyłanych na stronach internetowych. Polecenie CONNECT służy do ułatwienia bezpiecznego połączenia szyfrowanego przy użyciu protokołu SSL. Szyfrowane połączenia HTTP odbywają się przez HTTPS, rozszerzenie HTTP zaprojektowane do bezpiecznego przesyłania danych.

Adresy URL rozpoczynające się od „http: //” są dostępne za pośrednictwem standardowych protokołów przesyłania hipertekstu i domyślnie korzystają z portu 80. Adresy URL rozpoczynające się od „https: //” są dostępne za pośrednictwem bezpiecznego Połączenie HTTPS i często używa portu 443.

POCZTA

POST to seria kontrole systemu wykonywane przez komputery i inne urządzenia elektroniczne, gdy są włączone. Wyniki testu mogą być wyświetlane na ekranie, wyświetlane za pomocą migających diod LED lub po prostu zapisywane wewnętrznie. V systemy komputerowe operacja POST jest wykonywana na początku sekwencji rozruchowej. Jeśli wszystkie testy zakończą się pomyślnie, reszta procesu uruchamiania będzie kontynuowana automatycznie.

Systemy operacyjne Mac i Windows uruchamiają test POST przy każdym uruchomieniu lub ponownym uruchomieniu komputera. Kontrole skanowania Sprzęt komputerowy i zapewnia prawidłowe działanie procesora, pamięci RAM i urządzeń pamięci masowej. Jeśli podczas testu POST wystąpi błąd, proces uruchamiania może zostać całkowicie wstrzymany lub zatrzymany, a monitor może wyświetlić komunikat, że na ekranie informacyjnym systemu BIOS są często wyświetlane błędy testu POST. Mogą być wyprowadzane jako kody kryptograficzne, takie jak „08” lub jako komunikat systemowy, taki jak „Błąd pamięci systemowej przy przesunięciu”. Na Macu błędy POST są często oznaczane prostą grafiką, taką jak ikona uszkodzonego folderu, która wskazuje, że nie znaleziono urządzenia rozruchowego.

manifestacje fizyczne

W niektórych przypadkach ekran komputera może się nawet nie włączyć przed błędami POST. W takim przypadku kody błędów mogą być wyświetlane za pomocą migających diod LED lub sygnały dźwiękowe... Na przykład, Apple iMac odtworzy trzy kolejne tony, zatrzyma się na pięć sekund, a następnie powtórzy tony, gdy podczas uruchamiania zostanie wykryta uszkodzona pamięć RAM. Większość komputerów wydaje również sygnał dźwiękowy, gdy wykryte zostaną błędy testu POST, chociaż każdy producent używa własnych kodów.

POST to dość techniczny termin używany tylko przez technicy komputerowi regularnie. Jest to jednak dobry akronim, ponieważ pomaga lepiej zrozumieć komunikaty o błędach, które mogą pojawiać się na komputerach lub innych urządzenia elektryczne... Jeśli komputer nie uruchamia się z powodu błędu POST, możesz użyć innego urządzenia, aby znaleźć znaczenie i przyczynę błędu na stronie producenta. Następnie możesz podjąć odpowiednią akcję - wyjąć moduł pamięci lub ponownie zainstalować kartę graficzną, a następnie ponownie uruchomić sprzęt.

DOSTWAĆ

POST to także metoda przekazywania zmiennych formularze HTML z jednej strony internetowej na drugą bez wyświetlania ich na pasku adresu. Alternatywną metodą jest GET, która dodaje wartości do adresu URL. Żądania HTTP POST dostarczają dodatkowe dane od klienta (przeglądarki) do serwera w treści wiadomości. Natomiast żądania GET zawierają wszystkie wymagane dane w adresie URL. Formularze w HTML mogą używać dowolnej metody, określając element method = POST lub method = GET (domyślnie)

... Określona metoda określa sposób przesyłania danych formularza na serwer. Gdy używana jest metoda GET, wszystkie dane formularza są zakodowane jako adres URL jako parametry ciągu zapytania. W przypadku testu POST dane formularza pojawiają się w treści komunikatu żądania HTTP.

Różnice w przesłaniu formularza

Metoda żądania POST żąda, aby serwer sieciowy zaakceptował i przechował dane zawarte w treści wiadomości żądania. Często używane podczas przesyłania pliku lub przesyłania wypełnionego formularza internetowego.

Metoda żądania HTTP GET pobiera informacje z serwera. W ramach żądania GET niektóre dane mogą być przekazywane w ciągu zapytania adresu URL, określając wyszukiwane hasła, zakresy dat lub inne informacje identyfikujące żądanie.

W ramach żądania POST do serwera można przesłać dowolną ilość danych dowolnego typu w treści wiadomości żądania. Pole nagłówka w żądaniu POST zwykle wskazuje typ mediów internetowych treści wiadomości.

Główna różnica między żądaniami GET i POST polega na tym, że odpowiadają one różnym żądaniom HTTP zdefiniowanym w specyfikacjach HTTP. Proces przesyłania obu metod rozpoczyna się w ten sam sposób: zestaw danych formularza jest tworzony przez przeglądarkę, a następnie kodowany w sposób wskazany przez atrybut enctype. Dla METHOD = "POST, atrybut enctype może być multipart / form-data lub application / x-www-form-urlencoded, podczas gdy dla METHOD = "GET "jest wyzwalany tylko przez application / x-www-form-urlencoded. Ten formularz dane są ustawiane, a następnie przekazywane do serwera.

Aby przesłać formularz za pomocą metody METODA = „GET”, przeglądarka konstruuje adres URL, pobierając wartość atrybutu action i dołączając do niego zestaw danych formularza, zakodowany przy użyciu typu zawartości application / x-www-form-urlencoded). Przeglądarka traktuje ten adres URL tak, jakby odnosił się do linku (lub jakby użytkownik wpisał adres URL ręcznie). Przeglądarka dzieli adres URL na części i rozpoznaje hosta, a następnie wysyła żądanie GET do tego hosta z resztą adresu URL jako argumentem. Należy zauważyć, że ten proces oznacza, że ​​dane formularza są ograniczone do kodów ASCII. Należy zwrócić szczególną uwagę na kodowanie i dekodowanie innych typów znaków, gdy są one przesyłane za pośrednictwem adresu URL w formacie ASCII.

Przesłanie formularza z METHOD = "POST" powoduje wysłanie żądania POST przy użyciu wartości atrybutu action i wygenerowanego komunikatu zgodnie z typem treści wskazanym przez atrybut enctype.

PHP

PHP jest osadzone w HTML. Oznacza to, że kod PHP można wstawić do strony HTML. Kod PHP jest odczytywany lub analizowany przez serwer hostujący stronę. Dane wyjściowe funkcji GET i POST w PHP na stronie są zwykle zwracane jako HTML, który może być odczytany przez przeglądarkę. Ponieważ kod PHP jest konwertowany na HTML przed załadowaniem strony, użytkownicy nie mogą wyświetlać kodu PHP na stronie. Dzięki temu strony PHP są wystarczające do uzyskiwania dostępu do baz danych i innych chronionych informacji.

Większość Składnia PHP zapożyczone z innych języków, takich jak C, Java i Perl. Jednak PHP ma wiele unikalnych funkcji i funkcji specjalnych. Celem tego języka jest umożliwienie programistom internetowym szybkiego i łatwego pisania dynamicznie generowanych stron.

Wordpress

WordPress jest darmowy system zarządzanie treścią wykorzystywane do tworzenia i utrzymywania stron internetowych. Łatwość obsługi i unikalne funkcje blogowania sprawiły, że jest to najpopularniejsze narzędzie do blogowania w Internecie.

Interfejs WordPress pozwala każdemu, kto nie ma doświadczenia w tworzeniu stron internetowych, na tworzenie i publikowanie strony internetowej. Wbudowane narzędzia do blogowania zapewniają łatwy sposób śledzenia poszczególnych postów, odwiedzających i komentarzy użytkowników.

Chociaż dostępnych jest ich tysiące Szablony WordPress i wtyczek, system POST GET w WordPressie nadal ma swoje ograniczenia. Ponieważ jest to usługa oparta na szablonach, użytkownik powinien zacząć od gotowej strony internetowej, a nie tworzyć strony od zera. Ponadto nie ma możliwości osadzenia skryptów ani utrzymywania bazy danych z takim samym poziomem kontroli, jaki oferuje niestandardowa witryna internetowa.

Narzędzie POST_GET_ID () pozwala używać skryptów do kontrolowania elementu, ponieważ ma on unikalny identyfikator, a po przesłaniu go jako formularza za pomocą tych metod lista rozwijana zostanie wysłana z unikalny identyfikator co pozwala skryptowi zauważyć, która publikacja jest uruchomiona. Alternatywnie można wysłać ukrytą zmienną, która pozwoli skryptowi zobaczyć, który post należy do widoku.

Ten post ma na celu wyjaśnienie zasad przesyłania danych w Internecie za pomocą dwóch głównych metod: GET i POST. Napisałem go jako uzupełnienie instrukcji generatora pracy zmianowej dla tych, których nie interesują szczegóły ☺.

Przejdź do następującego adresu URL (jest to wizualne wyjaśnienie): http://calendar.net/calendar.php?year=2016 Uwaga dotycząca pasek adresu przeglądarka: calendarin.net/calendar.php ? rok = 2016 Główny plik nosi nazwę, następuje znak zapytania (?) I parametr „rok” o wartości „2016”. Tak więc wszystko, co następuje po znaku zapytania, to żądanie GET. To proste. Aby przekazać więcej niż jeden parametr, ale kilka, należy je oddzielić znakiem & (&). Przykład: calendarin.net/calendar.php ? rok = 2016 i wyświetlacz = dni-robocze i dni wolne od pracy

Główny plik nadal nosi nazwę, a po nim znak zapytania (?), następnie - parametr „rok” o wartości „2016”, następnie - ampersand (&), następnie - parametr „wyświetlacz” o wartości „praca -dni-i-dni -off ”.

Parametry GET można zmienić bezpośrednio w pasku adresu przeglądarki. Na przykład zmieniając wartość „2016” na „2017” i naciskając klawisz przejdziesz do kalendarza na rok 2017.

Jest to transmisja danych w sposób ukryty (adres strony się nie zmienia); to znaczy, możesz zobaczyć, co zostało przesłane tylko za pomocą programu (skryptu). Przykładowo w poniższym narzędziu do liczenia znaków w tekście dane źródłowe są przesyłane metodą POST: http://usefulonlinetools.com/free/character-counter.php

Jeśli masz jakieś pytania, uwagi i mój e-mail do usług.

Oprócz metody GET, o której pisaliśmy w poprzednim poście, istnieje jeszcze jedna metoda wysyłania żądania za pośrednictwem protokołu HTTP - metoda POST. W praktyce bardzo często stosowana jest również metoda POST.

Jeżeli w celu uzyskania dostępu do serwera metodą GET wystarczyło nam wpisać żądanie w adres URL, to w metodzie POST wszystko działa na innej zasadzie.

W celu realizacji tego rodzaju żądania należy kliknąć na przycisk z atrybutem type = "submit" znajdujący się na stronie. Zauważ, że ten przycisk znajduje się w elemencie z atrybutem metody ustawionym na post.

Rozważ ten kod HTML:

Wprowadź tekst:


Jeżeli użytkownik wpisze dowolny tekst w polu tekstowym i kliknie przycisk „Prześlij”, to na serwer zostanie wysłana zmienna tekstowa z wartością treści wprowadzonej przez użytkownika.

Żądania POST i GET w prostych słowach

Ta zmienna zostanie wysłana metodą POST.

Jeśli piszesz w takiej formie:

Następnie dane zostaną przesłane metodą GET.

Jeżeli w przypadku żądania GET ilość danych, które mogliśmy przesłać, była ograniczona długością paska adresu przeglądarki, to w przypadku żądania POST takie ograniczenie nie ma, a możemy przesłać znaczne ilości informacji.

Kolejna różnica między metodą POST a metodą GET, metoda POST ukrywa wszystkie przekazane do niej zmienne i ich wartości w swoim ciele (Entity-Body). W przypadku metody GET zostały one zapisane w ciągu żądania (Request-URI).

Oto przykład żądania POST:

POST / HTTP / 1.0 \ r \ n
Host: www.site.ru \ r \ n
Referer: http://www.site.ru/index.html\r\n
Cookie: dochód = 1 \ r \ n
Content-Type: application / x-www-form-urlencoded \ r \ n
Długość treści: 35 \ r \ n
\ r \ n
login = Dima i hasło = 12345

Zatem przesyłając dane metodą POST, napastnikowi będzie znacznie trudniej je przechwycić, ponieważ są ukryte, więc metoda POST jest uważana za bezpieczniejszą.

Ponadto metodą POST można przesyłać nie tylko tekst, ale także dane multimedialne (zdjęcia, audio, wideo). Istnieje specjalny parametr Content-Type, który określa rodzaj informacji, które należy przesłać.

Wreszcie zmienna POST służy do pobierania danych przesyłanych tą metodą na serwer.

Oto przykład przetwarzania w PHP:

echo $ _POST ['tekst'];
?>

W ostatnim poście zdecydowaliśmy, co wysyła przeglądarka (klient) Serwer HTTPżądań, a serwer wysyła odpowiedzi HTTP do klienta. Te prośby i odpowiedzi są przetwarzane zgodnie z określonymi zasadami. Jest coś takiego jak składnia, jak iw jakiej kolejności należy pisać. Musi istnieć dobrze zdefiniowana struktura.

Przyjrzyjmy się bliżej tej strukturze, która służy do budowania żądań i odpowiedzi w protokole HTTP.

Żądanie HTTP składa się z trzech głównych części, które występują dokładnie w kolejności pokazanej poniżej. Między nagłówkiem a treścią wiadomości znajduje się pusta linia (jako separator), jest to znak nowego wiersza.

Pusty ciąg (separator)

Opublikuj i pobierz prośby, jaka jest między nimi różnica, a która jest lepsza i do jakich celów?

treść wiadomości (treść jednostki) - parametr opcjonalny

Ciąg zapytania- określa sposób transmisji, adres URL dostępu oraz wersję protokołu HTTP.

Nagłówki- opisać treść wiadomości, przekazywać różne parametry oraz inne informacje i informacje.

treść wiadomości- to są same dane, które są przesyłane w żądaniu. Treść wiadomości jest opcjonalna i można ją pominąć.

Gdy otrzymujemy żądanie odpowiedzi z serwera, treścią wiadomości jest najczęściej treść strony internetowej. Ale przy wysyłaniu zapytań do serwera może czasami być również obecny, np. gdy przekazujemy dane, które wypełniliśmy w formularzu sprzężenie zwrotne na serwer.

Bardziej szczegółowo każdy element wniosku rozważymy w poniższych uwagach.

Weźmy jako przykład jedno prawdziwe żądanie serwera. Każdą część żądania zaznaczyłem własnym kolorem: wiersz żądania jest zielony, nagłówki są pomarańczowe, treść wiadomości jest niebieska.

Żądanie z przeglądarki:

Host: webgyry.info

Cookie: ustawienia wp

Połączenie: utrzymuj przy życiu

W poniższym przykładzie treść wiadomości jest już obecna.

Odpowiedź serwera:

Content-Type: tekst / html; zestaw znaków = UTF-8

Kodowanie transferu: chunked

Połączenie: utrzymuj przy życiu

Keep-Alive: limit czasu = 5

X-Pingback: //webgyry.info/xmlrpc.php

nienazwany dokument

Są to wiadomości, które są wymieniane między klientem a serwerem za pośrednictwem protokołu HTTP.

A tak przy okazji, czy chcesz wiedzieć, czy jakiś element w Twojej witrynie ma sens, korzystając z „celów” Yandex Metrics i Google Analytics?

Odrzuć to, co NIE działa, dodaj to, co działa i podwój swoje zyski.

Kurs dotyczący ustawiania celów Yandex Metrica ..

Kurs ustawiania celów Google Analytics...

Klient HTTP wysyła żądanie do serwera w postaci komunikatu żądania, który ma następujący format:

  • Ciąg żądania (wymagane)
  • Tytuł (element opcjonalny)
  • Pusty ciąg (wymagane)
  • Treść wiadomości (opcjonalnie)

Przyjrzyjmy się każdemu z tych elementów z osobna.

Ciąg zapytania

Ciąg żądania zaczyna się od tokenu metody, po którym następuje identyfikator URI żądania i wersja protokołu. Elementy są oddzielone od siebie spacjami:

Rozważać dany element w szczegółach

Metoda żądania

Ten element określa metodę, która ma zostać wywołana po stronie serwera na określonym identyfikatorze URI.

W HTTP istnieje osiem metod:

  • GŁOWA
    Używany do pobierania linii statusu i tytułu z serwera przez URI. Nie zmienia danych.
  • DOSTWAĆ
    Służy do odbierania danych z serwera pod określonym identyfikatorem URI. Nie zmienia danych.
  • POCZTA
    Służy do wysyłania danych na serwer (takich jak informacje o deweloperach itp.) za pomocą formularzy HTML.
  • POŁOŻYĆ
    Zastępuje wszystkie poprzednie dane w zasobie nowo załadowanymi danymi.
  • KASOWAĆ
    Usuwa wszystkie bieżące dane z zasobu określonego przez identyfikator URI.
  • ŁĄCZYĆ
    Ustanawia połączenie tunelowe z serwerem pod określonym identyfikatorem URI.
  • OPCJE
    Opisuje właściwości połączenia dla określonego zasobu.
  • NAMIERZAĆ
    Dostarcza komunikat zawierający wsteczny ślad lokalizacji określonego identyfikatora URI zasobu.

URI żądania

URI (Uniform Resource Identifier) ​​to identyfikator zasobu, do którego wysyłane jest żądanie. Najpopularniejszy format URI pokazano poniżej:

‘*’ używane, gdy żądanie HTTP nie jest specyficzne dla określonego zasobu, ale serwera. Używane tylko wtedy, gdy metoda nie musi być stosowana do zasobu. Na przykład,

absolutny uri używany, gdy żądanie HTTP jest wysyłane do serwera proxy. Serwer proxy jest proszony o przekazanie żądania z dostępnej pamięci podręcznej i zwraca odpowiedź. Na przykład:

asbolutny_path | źródło używane przez większość chatso.

Nauka pracy z żądaniami GET i POST

Żądany jest określony zasób określonego serwera. Na przykład klient chce pobrać zasób z serwera przez port 80. Adres zasobu to „www.proselyte.net” i wysyła następujące żądanie:

Żądanie pól nagłówka

Pola nagłówka umożliwiają klientowi komunikację Dodatkowe informacje o żądaniu i o sobie do serwera. Te pola działają jako modyfikatory żądań.

Poniżej znajduje się lista najważniejszych pól nagłówka, których można użyć:

  • Akceptuj-Charset
  • Akceptuj-kodowanie
  • Akceptuj-język
  • Upoważnienie
  • Oczekiwać
  • Jeśli-dopasuj
  • Jeśli-zmodyfikowano-od
  • Jeśli-brak-pasuje
  • Jeśli-Zakres
  • Jeśli-niezmodyfikowany-od
  • Zasięg
  • Polecający
  • Agent użytkownika

Jeśli chcemy zaimplementować własnego klienta i własny serwer WWW, możemy stworzyć własne pola nagłówka.

Przykładowe żądanie HTTP

Na tym kończy się badanie. żądania HTTP.
W następnym artykule przyjrzymy się odpowiedziom HTTP.

Jednym ze sposobów wysyłania żądania HTTP do serwera jest żądanie GET. Ta metoda jest najbardziej powszechna i najczęściej przy jej użyciu wykonywane są żądania do serwera.

Najłatwiejszym sposobem utworzenia żądania GET jest wpisanie adresu URL w pasku adresu przeglądarki.

Przeglądarka prześle na serwer następujące informacje:

POBIERZ / HTTP / 1.1
Host: webgyry.info
Klient użytkownika: Mozilla / 5.0 (Windows NT 6.1; rv: 18.0) Gecko / 20100101 Firefox / 18.0
Akceptuj: text/html, application/xhtml + xml, application/xml; q = 0,9, * / *; q = 0,8
Accept-Language: ru-RU, ru; q = 0,8, en-US; q = 0,5, en; q = 0,3
Akceptuj-kodowanie: gzip, deflate
Cookie: ustawienia wp
Połączenie: utrzymuj przy życiu

Wniosek składa się z dwóch części:

1. wiersz zapytania

2.nagłówki (nagłówki wiadomości)

Należy pamiętać, że żądanie GET nie zawiera treści wiadomości. Nie oznacza to jednak, że z jego pomocą nie możemy przenieść żadnych informacji na serwer.

Różnica między metodami GET i POST

Można to zrobić za pomocą specjalnych parametrów GET.

Aby dodać parametry GET do żądania, musisz umieścić znak „?” na końcu adresu URL. a następnie zacznij ich pytać zgodnie z następującą zasadą:

nazwa_parametru1 = wartość_parametru1 & nazwa_parametru2 = wartość_parametru2 & ...

Separatorem pomiędzy parametrami jest znak „&”.

Na przykład, jeśli chcemy przekazać serwerowi dwie wartości, nazwę użytkownika i jego wiek, można to zrobić za pomocą następującej linii:

http://site.ru/page.php?name=dima&age=27

Po wykonaniu tego zapytania dane trafiają do tzw. zmiennej środowiskowej QUERY_STRING, z której można je pobrać na serwer za pomocą języka programowania WWW po stronie serwera.

Oto przykład, jak można to zrobić w PHP.

echo "Twoje imię:". $ _GET ["nazwa"]. "
»;
echo "Twój wiek:". $ _GET ["wiek"]. "
»;
?>

Konstrukcja $_GET ["parameter_name"] pozwala wyświetlić wartość przekazanego parametru.

W wyniku wykonania tego kodu w przeglądarce wyświetli się:

Twoje imię: dima
Twój wiek: 27

wykonujemy również żądanie do serwera metodą GET.

Ten post jest odpowiedzią na pytanie zadane w komentarzu do jednego z moich artykułów.

W tym artykule chcę Wam opowiedzieć, czym są metody HTTP GET/POST/PUT/DELETE i inne, do czego zostały wymyślone i jak ich używać zgodnie z REST.

HTTP

Czym dokładnie jest jeden z głównych protokołów Internetu? Wyślę pedantów do RFC2616, a resztę opowiem jak człowiek :)

Protokół ten opisuje komunikację między dwoma komputerami (klientem i serwerem) w oparciu o komunikaty o nazwie Request i Response. Każda wiadomość składa się z trzech części: linii początkowej, nagłówków i treści. W takim przypadku wymagana jest tylko linia startu.

Linie startowe żądania i odpowiedzi mają inny format - interesuje nas tylko linia startowa żądania, która wygląda tak:

URI metody HTTP / WERSJA ,

Gdzie METHOD to tylko metoda żądania HTTP, URI to identyfikator zasobu, VERSION to wersja protokołu (wg ten moment aktualna wersja 1.1).

Nagłówki to zbiór par nazwa-wartość oddzielonych dwukropkami. W nagłówkach przesyłane są różne informacje o usługach: kodowanie wiadomości, nazwa i wersja przeglądarki, adres, z którego przyszedł klient (Referrer) i tak dalej.

Treść wiadomości to w rzeczywistości przesłane dane. W odpowiedzi przesyłane dane to z reguły strona html, której żądała przeglądarka, a w żądaniu np. w treści wiadomości przesyłana jest zawartość plików przesłanych na serwer. Ale z reguły treść wiadomości w ogóle nie jest zawarta w żądaniu.

Przykładowa komunikacja HTTP

Spójrzmy na przykład.

Zapytanie:
GET /index.php HTTP / 1.1 Host: example.com User-Agent: Mozilla / 5.0 (X11; U; Linux i686; ru; rv: 1.9b5) Gecko / 2008050509 Firefox / 3.0b5 Akceptuj: tekst / html Połączenie: zamknij
Pierwsza linia to linia żądania, reszta to nagłówki; brakuje treści wiadomości

Odpowiedź:
HTTP / 1.0 200 OK Serwer: nginx / 0.6.31 Content-Language: ru Content-Type: text / html; charset = utf-8 Długość treści: 1234 Połączenie: zamknij ... SAMA STRONA HTML ...

Zasoby i metody

Wróćmy do początkowego ciągu zapytania i pamiętajmy, że zawiera on taki parametr jak URI. To oznacza Uniform Resource Identifier - jednolity identyfikator zasobu. Zasób to z reguły plik na serwerze (przykładowy URI w tym przypadku to "/styles.css"), ale generalnie zasób może być obiektem abstrakcyjnym ("/blogs/webdev/" - wskazuje blok „Tworzenie stron internetowych”, a nie dla konkretnego pliku).

Typ żądania HTTP (nazywany również metodą HTTP) informuje serwer, jaką akcję chcemy wykonać z zasobem. Początkowo (na początku lat 90.) zakładano, że klient może chcieć od zasobu tylko jednej rzeczy - dostać, ale teraz, korzystając z protokołu HTTP, można tworzyć posty, edytować profil, usuwać wiadomości i wiele więcej. A te działania trudno pogodzić z określeniem „odbieranie”.

Aby rozróżnić akcje z zasobami na poziomie metod HTTP wymyślono następujące opcje:

  • GET - zdobywanie zasobu
  • POST - tworzenie zasobu
  • PUT - aktualizacja zasobów
  • DELETE - usuwanie zasobu
Zwróć uwagę na to, że specyfikacja HTTP nie zobowiązuje serwera do zrozumienia wszystkich metod (które w rzeczywistości jest znacznie więcej niż 4) - wymagane jest tylko GET, a także nie mówi serwerowi, co ma zrobić po otrzymaniu żądania z określoną metodą. Oznacza to, że serwer odpowiada na żądanie DELETE /index.php HTTP/1.1 nie jest zobowiązany do usuń stronę index.php na serwerze, tak jak w żądaniu GET /index.php HTTP/1.1 nie jest zobowiązany do zwrócić ci stronę index.php, może ją usunąć jak :)

REST wchodzi w grę

REST (ang. REpresentational State Transfer) – termin ten został ukuty w 2000 roku przez Roya Fieldinga – jednego z twórców protokołu HTTP – jako nazwa grupy zasad budowania aplikacji internetowych. Ogólnie rzecz biorąc, REST obejmuje szerszy obszar niż HTTP - może być używany w innych sieciach z innymi protokołami. REST opisuje zasady interakcji klient-serwer w oparciu o pojęcia „zasobu” i „czasownika” (można je rozumieć jako podmiot i orzeczenie). W przypadku HTTP zasób jest definiowany przez jego identyfikator URI, a czasownik to metoda HTTP.

REST proponuje rezygnację z używania tego samego URI dla różnych zasobów (czyli adresy dwóch różnych artykułów, takich jak /index.php?article_id=10 i /index.php?article_id=20, nie są sposobem REST) ​​i różne metody HTTP dla różnych działań. Oznacza to, że aplikacja internetowa napisana w podejściu REST usunie zasób podczas dostępu do niego metodą HTTP DELETE (oczywiście nie oznacza to, że powinieneś być w stanie usunąć wszystko i wszystko, ale każdyżądanie usunięcia aplikacji musi używać metody HTTP DELETE).

REST daje programistom możliwość pisania ustandaryzowanych i nieco ładniejszych aplikacji internetowych niż kiedykolwiek wcześniej. Używając REST, URI do dodania nowego użytkownika nie będzie /user.php?action=create (metoda GET / POST), ale po prostu /user.php (ściśle metoda POST).

W rezultacie połączenie istniejących specyfikacja HTTP a podejście REST w końcu ma sens dla różnych metod HTTP. GET - zwraca zasób, POST - tworzy nowy, PUT - aktualizuje istniejący, DELETE - usuwa.

Problemy?

Tak, jest mały problem z zastosowaniem REST w praktyce. Ten problem nazywa się HTML.

Żądania PUT / DELETE można wysyłać za pomocą XMLHttpRequest, kontaktując się z serwerem "ręcznie" (powiedzmy przez curl lub nawet przez telnet), ale nie można wykonać formularza HTML wysyłającego pełne żądanie PUT / DELETE.

Chodzi o to, że specyfikacja HTML nie pozwala na tworzenie formularzy przesyłających dane inaczej niż poprzez GET lub POST. Dlatego do normalnej pracy innymi metodami trzeba je sztucznie naśladować. Na przykład w Racku (mechanizm, za pomocą którego Ruby współdziała z serwerem WWW; Railsy, ​​Merb i inne frameworki Ruby są tworzone przy użyciu Racka), możesz dodać do formularza ukryte pole o nazwie „_method” i określić nazwę metoda jako wartość (na przykład "PUT") - w tym przypadku zostanie wysłane żądanie POST, ale Rack będzie mógł udawać, że otrzymał PUT, a nie POST.

Łączy ich to, że działają w ten sam sposób. Technicznie nie ma między nimi różnicy. Ale istnieją różnice ideologiczne.

Omówię je w kontekście PHP. Proszę to zanotować Protokół HTTP jest pośrednio związany z PHP, ponieważ został stworzony do wymiany strony html PHP po prostu rozszerza możliwości obu.

Żądanie GET służy do odbierania danych i POST do wysłania. (Przypominam, że technicznie działają w ten sam sposób).

Dlatego w kontekście PHP, opartego na tej ideologii, zrobili co następuje:
1. Tablice superglobalne ($ _GET, $ _POST) są tworzone domyślnie przy każdym uruchomieniu PHP.
2. Jeśli w ciągu zapytania znajduje się znak zapytania (?). Wtedy wszystko, co się po nim liczy parametryŻądanie GET, są one prezentowane w formacie „klucz” = „wartość”, a znak ampersand (&) jest używany jako separator
Przykład:
GET /index.php?name=Andrey&surname=Galkin
to jest ciąg zapytania, są 2 parametry. te parametry znajdą się w tablicy $_GET.
3. $ _POST jest wypełniany w inny sposób. zawartość tej tablicy jest wypełniana z "nagłówków żądań". To znaczy z miejsca ukrytego przed wzrokiem w wyraźnej formie. Całą procedurę tworzenia takich nagłówków przejmuje przeglądarka. Chociaż czasami coś jest edytowane ręcznie w nagłówkach.

Najczęściej w formularzach stosuje się zapytanie o pocztę (do przesyłania danych).

Na przykład mamy formularz logowania 2 pola login i hasło.

Wyobraźmy sobie, że używamy metody GET. Następnie przesyłając formularz przejdziemy na adres /login.php?login=Andrey&password=123, zgadzam się, że przesyłanie takich informacji w ten sposób nie jest wcale bezpieczne. Każdy może otworzyć przeglądarkę i zaczynając wpisywać adres strony, może zobaczyć Twoje hasła i loginy z historii.

Ale jeśli określiliśmy za pomocą metody POST, otrzymalibyśmy następujące żądanie:
POST /login.php (login = Andrey i hasło = 123), co byłoby ukryte w nawiasach, a nie zapisane w przeglądarce.

Ogólnie podsumowując:
GET to pobranie określonej strony w określony sposób (sortowanie, bieżąca strona bloga, ciąg wyszukiwania itp.).
POST - do wysłania danych, które nie wpływają na wyświetlanie strony, w tym sensie, że dane te wpływają jedynie na wynik wykonania skryptu (loginy, hasła, numery kart kredytowych, wiadomości itp.).

I jeszcze jedna dobra wiadomość, można je łączyć np.
POST /index.php?page=login (login = Andrey i hasło = 123) Myślę, że wyjaśniłem już wystarczająco, co z tego wyniknie i jakie parametry trafią do której tablicy.