Programare Web: Laborator HTTP

Lectura obligatorie

HTTP Made Really Easy
Hypertext Transfer Protocol
HTTP cookie
How the web works: HTTP and CGI explained

Cerinte

In cadrul acestui laborator studentii nu vor avea de implementat nimic 🙂 (a se vedea totusi observatiile de la exemplele 7 si 8), dar vor trebuie sa parcurga lectura obligatorie de mai sus. De asemenea, vor parcurge exemplele de mai jos, le vor face functionale si le vor rula pe laptopul personal sau in contul personal de pe serverul linux.scs.ubbcluj.ro, le vor intelege si vor trebui sa explice functionarea acestora. In saptamana 6 este posibila primirea unui test in vederea evaluarii cunostintelor prezentate la curs si in cadrul resurselor bibliografice de mai sus.

Exemplul 1

Fisierul demo.c, se va compila ca demo.cgi.

See it in action

Exemplul 2

Fisierul contor.cgi. I se vor atribui drepturi de executie pentru serverul web (o+x).

See it in action

Exemplul 3 – Incapsularea parametrilor trimisi din browser prin GET

Fisierul show_input_data.c, se va compila ca show_input_data.cgi

In locul variantei de mai sus scrise in C, se poate folosi varianta scrisa ca shell Unix:

See it in action

Exemplul 4 – Incapsularea parametrilor trimisi din browser prin POST

Acelasi exemplu ca exemplul 3, dar datele sunt trimise prin POST.

Fisierul show_input_data.c, se va compila ca show_input_data.cgi

See it in action

Exemplul 5 – Incapsularea continutului unui fisier prin POST

Fisierul show_input_data.c, se va compila ca show_input_data.cgi

See it in action

Exemplul 6 – Afisarea antetelor din cadrul cererii HTTP

See it in action

Intrebare: Unde puteti gasi si cum puteti vizualiza codul sursa al exemplului 6 de mai sus?
Raspuns: Ar trebui sa stiti pana in acest moment pe baza cunostintelor dobandite :).

Exemplul 7 – URL Decoding

Fisierul decodeURL.c, se va compila ca decodeURL.cgi.

See it in action

Cerinta facultativa pentru extra puncte la laborator: Modificati exemplul de mai sus astfel incat sirul care trebuie decodificat sa fie trimis serverului prin intermediul unui formular.

Exemplul 8 – Managementul sesiunii si caracterul stateless al protocolului HTTP

Fisierul play.c, se va compila ca play.cgi.

See it in action

Cerinta facultativa pentru extra puncte la laborator: Modificati exemplul de mai sus astfel incat managementul sesiunii sa nu se faca prin intermediul unui input de tip hidden ci prin intermediului unui cookie.


Tutorial pentru a va instala serverul web Apache pe Windows (veti avea nevoie la urmatoarele laboratoare de el, inclusiv la laboratoarele de AJAX, PHP, etc) si de a va “juca” cu protocolul HTTP si exemplele de la acest laborator pe Windows:

  1. Cautati, download-ati si instalati xampp
  2. Porniti xampp si din fereastra de control al xampp porniti serverul web Apache. Ar trebui sa vedeti ca acesta ocupa porturile 80 si 443
  3. Verificati ca functioneaza http://localhost sau https://localhost
  4. Localizati DocumentRoot-ul serverului web (directorul implicit din care serverul web serveste documente si care corespunde URL-ului http://localhost). Acest folder implicit este c:\xampp\htdocs\, dar poate fi si altul setat cu ajutorul directivei DocumentRoot in cadrul fisierului de configurare httpd.conf al serverului web.
  5. In orice subfolder din cadrul folderului specificat ca si DocumentRoot, puteti plasa fisiere CGI care trebuie sa fie executabile din perspectiva sistemului de operare (pe sistemul de operare Windows sunt fisiere executabile fisierele cu extensia .com, .exe, .bat)
  6. ditati fiserului de configurare al serverului web httpd.conf pentru a specifica extensii de fisiere aditionale care sa se comporte ca fisiere CGI (serverul web sa trimita clintului output-ul rezultat in urma executiei acestor fisiere si NU continutul propriu-zis al fisierelor). Pentru aceasta directiva AddHandler din cadrul fiserului de configurare httpd.conf al serverului web ar trebui sa arate in forma urmatoare:

  7. Restartati serverul web.

Fisier-ul de test pe Windows demo.bat: