70-562: Understanding the Players

Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET.

Przed przystąpieniem do poznawania technologii ASP.NET 3.5 oraz tworzenia witryn internetowych w niej (również w każdej innej technologii do tworzenia aplikacji www), warto zapoznać się z głównymi elementami wykorzystywanymi w udostępnianiu użytkownikowi stron.

Aplikacje internetowe są klasycznym przykładem architektury klient – serwer. Użytkownik korzysta z przeglądarki internetowej (klient). Za pomocą Internetu (przy wykorzystaniu protokołu HTTP - Hypertext Transfer Protocol) przekazywane są żądania do serwera www, na którym znajduje się strona, którą użytkownik chce zobaczyć.

Poniższy rysunek pokazuje częstą interakcje przeglądarki z serwerem:

chapter 1 lekcja 1 obraz 1

Przeglądarka po wpisaniu przez użytkownika adresu strony wysyła do serwera komendę GET protokołu HTTP, która może wyglądać mniej więcej tak:

   1: GET /default.aspx HTTP/1.1
   2: Host: eastgroup.pl

W pierwszej linijce żądania HTTP znajduje się komenda (GET) wraz ze stroną jaką ma zostać wyświetlona użytkownikowi (/default.aspx) oraz wersja protokołu HTTP (1.1). W drugiej linijce znajduje się natomiast nazwa hosta, z której pochodzi żądana strona. Serwer www może hostować kilka różnych witryn, które posiadają różne adresy. Dzięki temu jest w stanie wyświetlić odpowiednią stronę użytkownikowi.

Odpowiedź serwera może wyglądać przykładowo:

   1: HTTP/1.1 200 OK
   2: Server: Microsoft-IIS/7.0
   3: Content-Type: text/html
   4: Content-Type: 38
   5: <html><body>Hello, world.</body></html>

Gdzie odpowiednie linijki oznaczają:

  1. wersje protokołu HTTP (1.1) oraz kod odpowiedzi (200 OK)
  2. typ serwera www, który obsłużył żądanie (Microsft-IIS/7.0)
  3. typ zawartości odpowiedzi (text/html)
  4. długość zawartości (38)
  5. zawartość odpowiedz (html)

Protokół HTTP definiuje kilka różnych komend, które mogą zostać wykorzystane w komunikacji między przeglądarką, a serwerem (tabelka poniżej).

Komenda Opis
OPTIONS Klient wysyłając tą komendę do serwera otrzyma listę komend obsługiwanych przez niego.
GET Pobiera dokument z serwera o określonym adresie URL.
POST Wysyła dane do serwera. Typowo jest rezultatem wypełnienia przez użytkownika formularza i wysłania go do serwera.
PUT Pozwala klientowi stworzenie pliku pod podanym adresem URL (o ile użytkownik ma prawo do zapisu). Zawartość żądania jest kopiowana do nowo utworzonego pliku (jeśli plik istnieje to jest nadpisywany)
DEBUG Nie jest zdefiniowany w specyfikacji HTTP 1.1 ale jest wykorzystywany do uruchomienia aplikacji ASP.NET w trybie debugowania, dzięki czemu Visual Studio może się do niej podpiąć

Istnieje również kilka różnych typów zawartości. Content-Type składa się z dwóch części: Typ/PodTyp. Poniżej znajdują się dostępny typy zawartości:

Typ Opis
Text Informacja tekstowa. Istnieje kilka podtypów, główne to plain (czysty tekst), html, xml.
Image W zawartości jest przesyłany obraz. Powszechnie są używane dwa podtypy: jpeg, gif
Audio W zawartości jest przesyłany dźwięk. Główny podtyp to basic.
Video W zawartości jest przesyłany obraz. Główny podtyp to mpeg
Application Pozostałe typy danych.
Wysyłanie danych z formularza do sewera

W HTMLu zdefiniowany jest znacznik <form>, który może zostać wykorzystany przez programistę do zbudowania formularza, za pomocą, którego zbierze dane od użytkownika. Przykładowy formularz może mieć postać:

   1: <form method="POST" action="getUser.aspx">
   2:     Podaj nazwę użytkownika:
   3:     <input type="text" name="userName">
   4:     <input type="submit" value="Pobierz użytkownika">
   5: </form>

Dane z formularza można przesłać dwoma metodami: GET oraz POST. W przypadku metody GET dane są przesyłane w adresie url, po nazwie strony znajduje się znak zapytani “?”, a za nim pary klucz=wartość oddzielone znakiem ampersantu “&” np. http://moja.strona.pl/login.aspx?username=daniel&password=plawgo . W takim przypadku żądanie HTTP będzie wyglądało tak:

   1: GET /login.aspx?username=daniel&password=plawgo HTTP/1.1
   2: Host: moja.strona.pl

Metoda ta jest niezalecana ponieważ posiada kilka wad. Użytkownik może przez przypadek zmienić wartość parametru zmieniając adres url. Innym poważnym problemem może być sytuacji, gdy użytkownik chce się podzielić z kimś adresem danej strony, a w adresie jest przekazywany token uwierzytelniający użytkownika, co spowoduje, że ten ktoś będzie uwierzytelniony. Dodatkowo długość adresu url (a co za tym idzie wartości parametrów oraz ich) ma określoną długość. W przypadku IIS oraz IE długość nie może być większa niż 1024 znaki.

Drugą metodą (zalecaną) jest przekazywanie danych za pomocą metody POST. Żądanie POST może wyglądać mniej więcej tak:

   1: POST /login.aspx HTTP/1.1
   2: Host: moja.strona.pl
   3: username=daniel&password=plawgo

Tagi: , , , ,

Comments (2) -

Andrew
Andrew Poland
3/1/2010 10:22:41 PM Permalink

Hmm, trochę nie rozumiem do czego służy ten post? Nie chcę, aby mnie źle zrozumiano, ale powiela on powielany już wiele razy temat podstaw HTTP... Czy nie sensowniej byłoby pokazać jakieś kruczki, haczyki, itp w mechanizmach ASP? Coś nowego.

daniel.plawgo
daniel.plawgo Poland
3/2/2010 7:45:20 AM Permalink

Faktycznie, temat HTTP był nie raz już poruszany. Tworząc serię wpisów przygotowujących do egzaminu chcemy, aby była ona kompletna z tym co jest wymagane podczas egzaminu, czyli między innymi informacje zawarte w tym artykule.

Dzięki za uwagę :)

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


Eastgroup.pl na facebooku