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:

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ą:
- wersje protokołu HTTP (1.1) oraz kod odpowiedzi (200 OK)
- typ serwera www, który obsłużył żądanie (Microsft-IIS/7.0)
- typ zawartości odpowiedzi (text/html)
- długość zawartości (38)
- 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