|
Esaminiamo ora in dettaglio la struttura delle
richieste che un browser invia al server tramite protocollo HTTP.
Tipicamente si tratta di input proveniente da form o da link
ipertestuali, e sono codificate con delle URL. Nel caso più
generale una URL http ha il seguente formato:
http://sito:porta/path/file.ext/extrapath?data
Il browser utilizza innanzitutto il nome del
sito e il numero della porta per trovare il server su
Internet, e poi comincia un colloquio utilizzando il protocollo
specificato come prefisso. Nel caso che stiamo considerando,
assumiamo che il prefisso sia http. In generale l'URL
può usare altri prefissi: ftp, gopher,
ldap eccetera (e cambia sia il formato dell'URL che il
protocollo da usare). Una volta connesso col web server il browser
solitamente invia la richiesta utilizzando il comando HTTP
GET. Questa richiesta viene generata quando l'utente segue
un link. Sono possibili tuttavia altre richieste. Innanzitutto
HEAD, usata spesso dai motori di ricerca per estrarre
l'intestazione e non tutto il documento. Quando l'utente invia una
form, i dati vengono spesso trasferiti utilizzato il comando
POST. Infine, quando l'utente pubblica le sue pagine con un
editor che supporta il publishish, generalmente invia i dati
al web server utilizzando il comando PUT; questo comando non
è supportato da tutti i Web Server, anzi occorre ricorrere a
speciali estensioni. Ci sono altri comandi ancora di uso meno
frequente.
In base al path, il server stabilisce
come deve essere servita una richiesta, consultando la sua
configurazione. Ad ogni path viene associata una diversa
modalità di gestione. Nel caso più semplice si tratta
della modalità di lettura: il server semplicemente invia il
file richiesto così com'è. L'altra modalità
importante è quella di esecuzione, in cui il server gestisce
la richiesta mandando in esecuzione il file specificato e
ritornando al client l'output prodotto. In realtà sono
possibili diverse modalità di esecuzione. La modalità
più generale è quella in cui si manda in esecuzione un
generico programma o una DLL. Nei casi più specifici delle
servlet o del Perl embedded, il path contraddistingue l'interprete
Java o Perl incorporato nel web server, ed è generalmente
/servlet per le servlet e /perl per il Perl. Quello
che segue il path dipende dalla particolare implementazione. Nel
caso della servlet col JRun deve seguire il nome di una classe
posto in una ben precisa directory specificata dalla configurazione
del JRun. I server spesso in base all'estensione fanno altre
distinzioni. Per esempio, nel caso della lettura il server utilizza
l'estensione per determinare il tipo MIME del documento da
ritornare al browser. Nel caso dell'esecuzione, il server può
utilizzare l'estensione per stabilire con quale interprete deve
mandare in esecuzione il file.
Quando si manda in esecuzione un programma, il
browser invia al server dei parametri, che vengono poi passati al
programma. Nel caso di richieste GET i parametri vengono
accodati all'URL della richiesta (separato da un "?"), mentre nel
caso di richieste POST, i parametri vengono passati al
programma utilizzando la standard input. Le richieste possono anche
contenere un extra path, come si vede dalla forma generale
dell'URL, che viene passato anche esso come parametro.
|