1) dal client costringiamo il server a passare i parametri ad un gateway program tramite il metodo delle variabili d'ambiente
2) escludiamo il server (e quindi anche il client) e colloquiamo con lo stesso gateway program, passandogli i parametri tramite variabili d'ambiente, come se il server fossimo noi stessi.
Il gateway program che adotteremo
per i nostri esperimenti è il programma nph-count,
a disposizione di molti www server, responsabile del contatore presente
in molte pagine web (il numero che tiene traccia del numero di accessi
alla pagina stessa).
Questo gateway prende due coppie
nome=valore come input:
Per forzare una chiamata GET all'indirizzo del gateway, scriviamo sulla linea "location" del nostro browser web la stringa:
http://www.inf.uniroma3.it/cgi-bin/nph-count?width=5&link=pippo |
nella finestra del client comparirà il contatore, come si vede in figura (il numero è 00001 se nessuno ha usato mai prima la parola chiave "pippo").
Per il secondo esperimento è
necessario portarci nella directory ~www/httpd/cgi-bin,
che, nel nostro sistema, ospita i gateway program. Assegnamo il valore
"GET"
alla variabile d'ambiente REQUEST_METHOD,
ed il valore "width=5&link=pippo"
alla variabile QUERY_STRING.
Poi lanciamo il programma:
<patrigna@pascal ~>cd ~www/httpd/cgi-bin
<patrigna@pascal ~www/httpd/cgi-bin>setenv REQUESTO_METHOD GET <patrigna@pascal ~www/httpd/cgi-bin>setenv QUERY_STRING "width=5&link=pippo" <patrigna@pascal ~www/httpd/cgi-bin>nph-count HTTP/1.0 200 OK Content-type: image/gif GIF87aKç]]]eeehhhsssXXXKKK:::&&&ff
!!!"""777bbb###PPP$$$???www333%%%xxxÿ
ððð±±±ÁÁÁßßß¿¿¿666```ïïï000555ppp444222BBBAAA>>>===<<<(((¼¼¼+++{{{þþ
|
Come si vede, il programma manda
il suo output direttamente sul video. L'output comincia con due righe testuali,
destinate all'header del messaggio http, poi presenta una riga vuota, e
quindi il codice binario rappresentante il contatore. Per verificare il
contenuto del file binario occorrerà salvare l'output su un file
(tramite la redirezione dello standard output). Il file è così
visibile con un editor come nedit,
ma non è editabile, in quanto contiene codici binari. Neanche con
un visualizzatore di immagini gif è visibile, in quanto contiene
le prime tre righe di caratteri testuali. Per risolvere il problema eliminiamo
le prime tre righe con il comando tail,
e poi visualizziamo il file con il programma xv.
La successione dei comandi è la seguente:
<patrigna@pascal ~www/httpd/cgi-bin>nph-count
> ~/pippo.gif
<patrigna@pascal ~www/httpd/cgi-bin>nedit ~/pippo.gif & <patrigna@pascal ~www/httpd/cgi-bin>xv ~/pippo.gif & f |