Le rôle de l'objet Response est de permettre de créer la réponse HTTP qui va être envoyée au navigateur, c'est-à-dire la page Web demandée par le client. Il permet de manipuler l'ensemble des informations à destination du navigateur du client, comme par exemple l'écriture de cookies...
L'objet Response possède une seule collection et de nombreuses propriétés et méthodes dont majorité correspondent à des champs de la réponse HTTP.
Objet Response |
||
Collections |
Methodes |
Propriétés |
Cookies |
Buffer |
AddHeader |
|
CacheControl |
AppendToLog |
|
CharSet |
BinaryWrite |
|
ContentType |
Clear |
|
Expires |
End |
|
ExpiresAbsolute |
Flush |
|
isClientConnected |
Redirect |
|
Status |
Write |
|
PICS |
|
Pour envoyer du texte au navigateur dans un code ASP, il
suffit d'utiliser la propriété write de l'objet Response, voici
un exemple simple montrant comment utiliser cette propriété:
<%@ LANGUAGE="VBSCRIPT" %>
<HTML>
<HEAD>
<TITLE>Exemple de script ASP</TITLE>
</HEAD>
<BODY>
<% Response.write("Bonjour") %>
</BODY>
</HTML>
Ce script est totalement inutile dans la mesure ou un
simple fichier HTML pourrait donner le même résultat. L'intérêt de cette méthode
est de pouvoir gérer des variables ainsi que des chaînes:
<%@ LANGUAGE="VBSCRIPT" %>
<HTML>
<HEAD>
<TITLE>Exemple de script ASP</TITLE>
</HEAD>
<BODY>
<% for i=1 to 10
Response.write("Compte a rebours: " & 10 - i & "<br>")
Next %>
</BODY>
</HTML>
La méthode Write() gère la conversion des données entrées en paranètre en chaîne de caractère utilisant le jeu de caractère par défaut du serveur. Pour envoyer des données binaires, il est possible d'utiliser la méthode BinaryWrite()
L'objet Response, outre la possibilité d'envoyer une page Web au navigateur du client, permet aussi d'envoyer des cookies à celui-ci, c'est-à-dire de stocker des données dans un fichier du client sous la forme de paires nom/valeur. L'objet Response fournit la collection cookies pour effectuer les opérations d'envoi de cookies au navigateur.
Le protocole HTTP permet de spécifier les valeurs de cookies dans les en-têtes HTTP, l'envoi de cookies au navigateur dans la page ASP doit donc se faire avant tout envoi dans le corps de la réponse.
Pour stocker une valeur dans un cookie apelé CCMCookie,
il suffit d'utiliser la commande suivante:
<%@ LANGUAGE="VBSCRIPT"
%>
<% response.cookies("CCMCookie")
= "Valeur" %>
Pour stocker plusieurs valeurs associées à des index
dans un cookie apelé CCMCookie, il suffit d'utiliser la commande
suivante:
<%@ LANGUAGE="VBSCRIPT"
%>
<% response.cookies("CCMCookie")("Index1")
= "Valeur1"
<% response.cookies("CCMCookie")("Index2")
= "Valeur2"
<% response.cookies("CCMCookie")("Index3")
= "Valeur3"
...
%>
En réalité, le cookie ainsi créé n'aura qu'une durée
limité à celle de l'utilisation du navigateur, cela signifie qu'il sera effacé
à la fermeture de celui-ci. Pour y remédier, il suffit de définir la propriété
expires, qui définit la "date limite de péremption du gâteau".
<% response.cookies("CCMCookie").expires = #4/18/2000#
La collection cookies possède d'autres propriétés que expires:
domain définit le nom du serveur pour lequel les valeurs du cookie sont accessibles
path définit le chemin sur le serveur pour lequel les valeurs du cookie sont accessibles
secure permet d'indiquer que le cookie ne peut être envoyé que lors d'une connexion sécurisée (SSL,S-HTTP,...)
Le rôle de l'objet Request est de permettre de récupérer la réponse HTTP envoyée par le navigateur au serveur, c'est-à-dire la page Web demandée par le client. Il possède une seule collection et de nombreuses propriétés et méthodes:
Objet Request |
||
Collections |
Methodes |
Propriétés |
ClientCertificates |
TotalBytes |
BinaryRead |
Cookies |
|
|
Form |
|
|
QueryString |
|
|
ServerVariables |
|
|
La majorité des propriété et des méthodes de l'objet Request correspondent à des fonctions ou propriétés permettant de manipuler les champs de la requete HTTP.
La réception des données se fait différemment selon que la méthode utilisée pour l'envoi du formulaire est GET ou POST.
La méthode GET permet d'envoyer les éléments du formulaire au travers de l'URL du script, en ajoutant l'ensemble des paires nom/valeur à l'URL du script, séparé de celui-ci par un point d'interrogation, ce qui donne un URL du type:
http://nom_du_serveur/cgi-bin/script.cgi?champ1=valeur1&champ2=valeur2...
Toutefois, la longueur de la chaîne URL étant limitée à 255 caractères, les informations situées au-delà de cette limite seront irrémédiablement perdues. De plus, cela crée une URL surchargée dans la barre d'adresse d'un navigateur et peut dévoiler des informations sensibles comme un mot de passe...
La collection QueryString permet de récupérer la
valeur associée à un champ par la syntaxe suivante
<%@ LANGUAGE="VBSCRIPT" %>
<% Request.QueryString("Champ") %>
Ainsi pour afficher tous les champs d'un formulaire, il
est possible d'utiliser la clause For Each du VBScript, qui permet de
parcourir l'ensemble des enregistrements d'une collection. Voici un script qui
affiche l'ensemble des valeurs associées aux champs d'un formulaire après
envoi au serveur:
<%@ LANGUAGE="VBSCRIPT" %>
<% For Each Champ in Request.QueryString %>
<%
Response.write(Champ + " = "& Request.QueryString(Champ)) %>
<%BR%>
<% Next
%>
La méthode POST code les informations de la même façon que la méthode GET (encodage URL et paires nom/valeur) mais elle envoie les données à la suite des en-têtes HTTP, dans un champ appelé corps de la requête. De cette façon la quantité de données envoyées n'est plus limitée, et est connue du serveur grâce à l'en-tête permettant de connaître la taille du corps de la requête.
La collection Form permet de manipuler les données
envoyées par un formulaire utilisant la méthode POST, par la syntaxe suivante
<%@ LANGUAGE="VBSCRIPT"
%>
<% Request.Form("Champ")
%>
Ainsi pour afficher tous les champs d'un formulaire, il
est possible, comme pour la collection QueryString, d'utiliser la clause For
Each du VBScript, permettant de parcourir les enregistrements d'une
collection. Voici un script qui affiche l'ensemble des valeurs associées aux
champs d'un formulaire après envoi au serveur:
<%@ LANGUAGE="VBSCRIPT" %>
<% For Each Champ in Request.Form %>
<%
Response.write(Champ +
" = "& Request.Form(Champ)) %>
<%BR%>
<% Next %>
La collection Cookies permet de récupérer les valeurs d'un cookie, c'est-à-dire un fichier présent sur le disque du client contenant des données envoyées par le serveur, (un cookie peut être créé grâce à l'objet Response).
L'accès aux données d'un cookie se fait de la manière suivante:
<%@ LANGUAGE="VBSCRIPT" %>
<% Variable = Request.Cookies("NomCookie")("Element") %>
Il est possible de parcourir l'ensemble des Cookies par le script suivant:
<%@ LANGUAGE="VBSCRIPT" %>
<% For Each Element in Request.Cookies %>
<%
Response.write(Element + " = ")
Response.write(Request.Cookies(Element)) %>
<%BR%>
<% Next %>
La collection ServerVariables de l'objet Request contient les en-têtes HTTP de la requête, pouvant parfois donner des informations très utiles sur les visiteurs ou le navigateur du client. Ce sont les variables définies par la norme CGI.
La syntaxe pour récupérer ces en-têtes est la suivante:
Request.ServerVariables("NOM-EN-TETE")
Voici les principaux en-têtes pouvant être utiles:
Nom de l'en-tête |
Description |
ALL_HTTP |
Type de méthode utilisée par le client (ie POST
ou GET) |
CONTENT_TYPE |
Type de contenu du corps de la requête (par exemple text/html).
|
METHOD |
Type de méthode utilisée par le client (ie POST
ou GET) |
REFERER |
URL du lien à partir duquel la requête a été
effectuée |
REMOTE_ADDR |
Adresse IP du client |
HTTP_ACCEPT_LANGUAGE |
Langage attendu par le browser (anglais par défaut) |
HTTP_USER_AGENT |
Chaîne donnant des informations sur le client, comme
le nom et la version du navigateur, du système d'exploitation |
Pour compter les visiteurs d'un site par exemple, il peut
être intéressant de stocker l'adresse IP de ces derniers et de compter le
nombre d'adresses IP stockées étant différentes chaque jour. Voici le code
permettant de stocker dans une variable l'adresse IP d'un visiteur, et qui
l'affiche:
<%@ LANGUAGE="VBSCRIPT" %>
<%
IP = Request.ServerVariables("REMOTE_ADDR")
Response.write("Votre
adresse IP est : " + IP) %>
<%BR%>
De nombreux autres objets sont disponibles pour remplir de multiples services. On peut ainsi télécharger sur divers sites Internet des composants, gratuits ou payants permettant de remplir diverses tâches : envois de courriers électroniques, gestion de forums, créations de graphiques, téléchargement (upload) de fichiers, …
Voir par exemple http://www.aspsmart.com