Les cookies sont des fichiers textuels transmis par une application Web dans le but de stocher des informations sur l'ordinateur de l'utilisateur.

Visite
Identite=MILLON%2DMARC%5CAdministrateur&Hote=127%2
E0%2E0%2E1&Choix=Veuf%28ve%29&Date=23%2F10%2F2
001+16%3A00%3A13&Navigateur=Mozilla%2F4%2E0+%28co
mpatible%3B+MSIE+6%2E0%3B+Windows+NT+5%2E0%3B+
%2ENET+CLR+1%2E0%2E2914%29&Adresse=%2FLAltruiste
%2Fcoursasp%2Fexemple%2Fcreation%5Fcookie%2Easp
localhost/
1024
257617920
29449230
154276752
29449163
*

Ces informations permettent de conserver des données relatives à l'identité du client et ses actions sur un site.

Bien que les cookies aient une mauvaise réputation auprès de certains internautes, les informations recélées par eux, ne concernent la plupart du temps que des activités préférentielles afin d'adapter le fonctionnement du site au client sans que ce-dernier n'ait à recommencer sempiternellement les mêmes processus pour parvenir à son but.

La création ou la mise à jour d'un cookie s'opère par l'intermédiaire de l'objet ASP Response associé à sa méthode Cookies().

Response.Cookies("nom_cookie")[("clé") | .Attribut] = Valeur

L'argument nom_cookie correspond à une chaîne de caractères qui représente le nom de l'élément et partant permet de lui affecter la ou les valeurs associées.

L'argument clé optionnel représente le nom d'une nouvelle entrée dans le cookie.

Les attributs de la collection cookies permettent d'accomplir certaines actions (voir ci-dessous).

La valeur peut être de n'importe quel type à condition qu'elle soit traduisible textuellement.

La lecture des informations contenues dans un cookie, s'effectue par l'intermédiaire de l'objet Request associé à sa méthode cookies().

Request.Cookies("nom_cookie")[("clé") | .Attribut]

Les différents éléments fonctionnent de la même façon que ci-dessous, hormis que dans ce cas, ils sont utilisés pour retrouver les valeurs associées aux cookies ou à leurs clés.

D'autre part, il existe un seul attribut valable dans ce contexte. En effet, l'unique attribut Haskeys vérifie si le cookie contient une ou plusieurs clés (voir ci-dessous).

<table>
<%
  For Each nom_cookie In Request.Cookies
    If Request.Cookies(nom_cookie).HasKeys Then
      For Each cle_cookie in Request.Cookies(nom_cookie)
         Response.Write "<tr><td>" & nom_cookie _
                              & "(" & cle_cookie & ") = " _
                              & Request.Cookies(nom_cookie)(cle_cookie) _
                              & "</td></tr>"
      Next
    Else
      Response.Write "<tr><td>" & nom_cookie & " = " _
                              & Request.Cookies(nom_cookie) _
                              & "</td></tr>"
    End If
  Next
%>
</table>

Dans l'exemple ci-dessous, l'instruction conditionnelle If...Then détermine si la collection de cookies contient des clés en utilisant l'attribut HasKeys.
En outre, les boucles For Each permettent de parcourir les éléments et sous-éléments de la collection cookies().

Par ailleurs, la propriété Count permet de comptabiliser le nombre d'éléments de la collection Cookies.

Response.Cookies.Count

Elle permet également de dénombrer le nombre de clés présentes dans un cookie particulier.

Response.Cookies("nom").Count

La suppression de toutes les clés d'un cookie s'effectue par l'intermédiaire d'une affectation d'une chaîne de caractère vide.

Response.Cookies("nom") = ""

Suite à cette action, la propriété count appliquée au cookie retourne une valeur nulle et l'attribut HasKeys retourne False.

Lorsqu'un cookie arrive à expiration, en principe, le cookie est supprimé de la machine cliente.

Les atributs
Attribut
Description
Domain = "URL_Domaine"
Si spécifié, le cookie est valable uniquement à partir du domaine spécifié (ex: www.laltruiste.com).
Expires = Date
indique la date d'expiration du cookie. Par défaut le cookie expire à la fin d'une session.
HasKeys = True | False
indique si le cookie contient une clé.
Path = "Chemin_Virtuel"
Si spécifié, le cookie est valable uniquement à partir du chemin d'accès fourni (ex: /coursasp). Pour une validité du cookie dans tout un site, il faut lui donner la valeur "/".
Secure = True | False
indique si le cookie doit être sécurisé.

Les cookies sont transmis dans un fichier unique placé dans le répertoire temporaire (temporary internet files) et dans un autre répertoire dénommé Cookies. S'il existe plusieurs cookies, les informations sont séparés par un astérisque (*).

<%
  Response.Cookies("Visite") = Date & " " & Time
  Response.Cookies("Visite")("Choix") = Request.Form("situation")
  Response.Cookies("Visite").Expires = DateAdd("d", 1, Date)
  Response.Cookies("Visite").path = "/"

  Response.Cookies("Adresse").Expires = DateAdd("d", 1, Date)
  Response.Cookies("Adresse").path = "/"
  Response.Cookies("Adresse") = Request.ServerVariables("PATH_INFO")
%>
Contenu du fichier cookie:mon_compte@hote
Visite
08%2F11%2F2002+13%3A44%3A32%5C&Choix=Veuf%28ve%29
localhost/
1024
2424444928
29525882
2518072384
29525796
*
Adresse
%2Fcoursasp%2F%2Fcookie%2Ftraitement%5Fcookie%2Easp
localhost/
1024
2424444928
29525882
2518472384
29525796
*
Exemple [voir]
<!-- Formulaire -->
<html>
  <head>
    <%
      Response.Cookies("Visite") = ""
    %>
  </head>
  <body>
    <h2>Faites un choix pour créer un cookie</h2>
    <form action="creation_cookie.asp" method="post">

      <input type="radio" name="situation" value="Célibataire">
        Célibataire<br>
      <input type="radio" name="situation" value="Marié(e)">
        Marié(e)<br>
      <input type="radio" name="situation" value="Concubinage">
        Concubinage<br>
      <input type="radio" name="situation" value="Pacs">
        Pacs<br>
      <input type="radio" name="situation" value="Veuf(ve)">
        Veuf(ve)<br>
      <input type="radio" name="situation" value="Divorcé(e)">
        Divorcé(e)<br>
      <br>

      <input type="submit" name="soumission" value="Soumettre">

    <table border="1" cellpadding="1" cellspacing="2">
      <tr>
        <td>Nombre de Cookies</td>
        <td><% Response.Write Request.Cookies.Count %></td>
      </tr>
      <tr>
        <td>Présence de clés dans Visite</td>
        <td><% Response.Write Request.Cookies("Visite").HasKeys %></td>
      </tr>
      <tr>
        <td>Nombre de Clés dans Visite</td>
        <td><% Response.Write Request.Cookies("Visite").Count %></td>
      </tr>
    </table>
  </body>
</html>
<!-- Fichier de traitement traitement.asp -->
<html>
  <head>
    <%
      Response.Cookies("Visite")("Date") = Date & " " & Time
      Response.Cookies("Visite").Expires = DateAdd("d", 1, Date)
      Response.Cookies("Visite").Domain = "www.laltruiste.com"
      Response.Cookies("Visite").path = "/"
      Response.Cookies("Visite")("Choix") = _
                      Request.Form("situation")
      Response.Cookies("Visite")("Adresse") = _
                      Request.ServerVariables("PATH_INFO")
      Response.Cookies("Visite")("Hote") = _
                      Request.ServerVariables("REMOTE_HOST")
      Response.Cookies("Visite")("Navigateur") = _
                      Request.ServerVariables("HTTP_USER_AGENT")
      Response.Cookies("Identite") = _
                      Request.ServerVariables("REMOTE_USER")
    %>
  </head>
  <body>
    <h2>Le cookie a été correctement créé.</h2>
    <table border="1" cellpadding="1" cellspacing="2">
      <tr>
        <td>Nombre de Cookies</td>
        <td><% Response.Write Request.Cookies.Count %></td>
      </tr>
      <tr>
        <td>Présence de Clés dans le cookie <i>Visite</i></td>
        <td><% Response.Write Request.Cookies("Visite").HasKeys %></td>
      </tr>
      <tr>
        <td>Nombre de Clés dans le cookie <i>Visite</i></td>
        <td><% Response.Write Request.Cookies("Visite").Count %></td>
      </tr>
      <tr>
        <td>Contenu du Cookie</td>
        <td><% Response.Write Request.Cookies("Visite") %></td>
      </tr>
      <tr>
        <td>Date Visite</td>
        <td><% Response.Write Request.Cookies("Visite")("Date") %></td>
      </tr>
      <tr>
        <td>Situation familiale</td>
        <td><% Response.Write Request.Cookies("Visite")("Choix") %></td>
      </tr>
      <tr>
        <td>Adresse URL</td>
        <td><% Response.Write Request.Cookies("Visite")("Adresse") %></td>
      </tr>
      <tr>
        <td>Hôte distant</td>
        <td><% Response.Write Request.Cookies("Visite")("Hote") %></td>
      </tr>
      <tr>
        <td>Navigateur Client</td>
        <td><% Response.Write Request.Cookies("Visite")("Navigateur") %></td>
      </tr>
      <tr>
        <td>Identité Client</td>
        <td><% Response.Write Request.Cookies("Identite") %></td>
      </tr>
    </table>
  </body>
</html>