Oggetto Request

Meno immediato del precedente, l'oggetto Request serve ad inviare delle richieste al server Web, ad esempio tramite un modulo.

I quattro metodi principali di questo oggetto sono Cookies, Form, QueryString e ServerVariables.

Occupiamoci subito del primo e dell'ultimo metodo elencato, per lasciare spazio ai due centrali più frequentemente utilizzati.


Request.Cookies

Serve a recuperare un cookie, la sintassi è semplice

Request.Cookies("NOME_DEL_COOKIE")

Request.ServerVariables

Serve a recuperare una serie di variabili d'ambiente proprietarie del server Web di appartenenza o dei server Web collegati, ecco un elenco delle principali classi utilizzabili:

ALL_HTTP - Restituisce gli header http richiesti dal client
HTTP_COOKIE - Booleano, restituisce true o false a seconda che i cookie siano abilitati o meno
HTTP_REFERER - Restituisce il nome ed il dominio di un sito da cui è partita una richiesta da un client
HTTP_USER_AGENT - Restituisce il sistema operativo del client che si collega all'applicazione
HTTPS - Booleano, restituisce true o false a seconda che la connessione sia protetta da SSL
LOCAL_ADDR - Restituisce l'indirizzo del server Web di appartenenza
QUERY_STRING - Restituisce l'intera querystring associata alla richiesta del client
REMOTE_ADDR - Restituisce l'indirizzo IP server Web richiedente
REMOTE_HOST - Restituisce il nome del server Web richiedente

La sintassi è molto semplice

Request.ServerVariables("RE

Request.Form

Questo è il primo metodo con cui è possibile inviare un pacchetto di dati al server Web perchè li elabori, il modulo Html verrà inviato specificando il metodo post, ad esempio

<form action="elabora.asp" method="post">

In questo caso il post avverrà al file elabora.asp, vediamo uno spezzone di un potenziale codice di questo file, che si occupi di inviare dati in un database o di altro non ci interessa, l'unica cosa che ci interessa è recuperare i dati inviati dal modulo:

var nome = Request.Form("nome");

dove la variabile nome è indicativa, in genere si utilizza lo stesso nome del campo a cui è associata, passato tra parentesi e tra doppi apici alla fine della stringa.

Esiste un altro modo di recuperare i dati da un form con questo metodo, è in realtà analogo ma in forma più completa, cioè passando la richiesta in una nuova stringa:

var nome = new String(Request.Form("nome"));

Ecco un classico esempio di differenza tra linguaggi di scripting client-side e server-side: non è possibile, ad esempio con Javascript, passare un dato tra due o più file, data l'impossibilità da parte di qualsiasi gestore di occuparsene... Asp pone rimedio a questo limite!


Request.QueryString

Simile al precedente, possiamo con questo metodo recuperare dati da un modulo appendendone i valori alla fine dell'Url della pagina di destinazione, ad esempio di elabora.asp, vediamo un esempio di possibile Url:
http://www.server.it/elabora.asp?nome=Luca

Prima di passare ad esempi concreti, analizziamo gli elementi e la struttura di una querystring:
? - Concatena il primo valore alla Url della pagina
& - Concatena dal secondo valore in poi alla Url della pagina
= - Identifica il valore
+ - Separa più parole (o valori) di una QueryString

Ecco un esempio più completo:
http://www.server.it/elabora.asp?nome=Luca&cognome=Ruggiero

Se il cognome fosse composto da più parole, ad esempio De Ruggiero, verrebbe utilizzato il carattere + in questo modo:
http://www.server.it/elabora.asp?nome=Luca&cognome=De+Ruggiero

Per reperire dati in questo modo dobbiamo inviare il form col metodo get, stabilito per default dalle convenzioni Html, ma è comunque meglio specificarlo:

<form action="elabora.asp" method="get">

Come nel caso precedente, possiamo recuperare il valore di un campo sia con la semplice dichiarazione

var nome = Request.QueryString("nome");

che con la più completa

var nome = new String(Request.QueryString("nome"));

E' opportuno evitare di utilizzare questo metodo per passare alla pagina Asp che elaborerà i dati nei casi in cui vengono inviati valori tipo password o carte di credito, venendo messi in chiaro sull'indirizzo della pagina, sarà possibile che un occhio indiscreto li legga stando seduto a fianco all'utente che compila il modulo, o che venga sfruttato da qualche professionista buontempone un bug di un browser per impossessarsi di certi dati.


Un esempio pratico dell'utilizzo del metodo Request.QueryString

La funzionalità di questo metodo ci permette di creare dei link che puntano direttamente alla querystring associata all'indirizzo, potremmo quindi creare un solo file Asp che, a seconda della querystring passata generi output diversi.

Creiamo un sommario di argomenti nel file index.htm:

<div>
   <a href="pagina.asp?id=1">Link a pagina 1</a><br>
   <a href="pagina.asp?id=2">Link a pagina 2</a><br>
   <a href="pagina.asp?id=3">Link a pagina 3</a><br>
</div>

In questo modo il file pagina.asp andrà a leggere la querystring passatagli nel link e si comporterà di conseguenza, immaginiamo di voler includere con le SSI un file diverso per ogni richiesta, ad esempio pagina1.htm, pagina2.htm e così via, ecco come si presenta il codice di pagina.asp:

<%@LANGUAGE = JScript%>
<%
   var id = new String(Request.QueryString("id"));
%>
<html>
 <head>
  <title>Oggetto Request</title>
 </head>
<body>

<%if ((id == "") || (id == "undefined")) {%> 
ERRORE 404 - File non trovato <%}%>
<%if (id == "1") {%> <!--#include file="pagina1.htm"--> <%}%>
<%if (id == "2") {%> <!--#include file="pagina2.htm"--> <%}%>
<%if (id == "3") {%> <!--#include file="pagina3.htm"--> <%}%>

</body>
</html>

Autore: Luca Ruggiero