next up previous contents index
Next: HTTP ``dynamique'' Up: Scripts CGI Previous: Scripts CGI   Contents   Index

Subsections

HTTP ``statique''

Un serveur WEB est, grosso-modo, un programme qui scrute des requêtes sur une entrée et qui produit un résultat en sortie. Les requêtes sont sous la forme de mots clefs suivis d'arguments. Les sorties sont sous la forme de texte au format HTML. Les entrées/sorties d'un serveur WEB se font au travers des sockets qui permettent les connexions entre machines distantes. Le numéro du port est 80 par convention, mais il est possible d'utiliser d'autres ports.

Le protocole HTTP est en mode non connecté ; cela signifie que la connexion est fermée après l'obtention du résultat d'une requête. Cela permet au serveur WEB de ne pas stocker d'état interne d'une connexion, ce qui accélère les traitements et diminue le besoin en mémoire.

Il est tout à fait possible d'interroger un serveur WEB avec l'outil telnet, en ouvrant le port 80 :

$ telnet www.erian-concept.com 80
GET /

<HTML>
<HEAD>
<TITLE>Erian Concept - Linux assistance</TITLE>
<META NAME="Author" CONTENT="Guilhem de Wailly">
</HEAD>

<FRAMESET ROWS="85,*"
          FRAMEBORDERS="NO"
          FRAMESPACING=0
          BORDER=0>
<FRAME NAME="head"
       SRC="head.htm"
       NORESIZE
       SCROLLING="NO">
<FRAME NAME="body"
       SRC="body-fr.htm"
       SCROLLING="YES">
</FRAMESET>
</HTML>

La première requête, la plus simple, est le GET qui demande l'obtention d'une ressource. Lorsque que la requête n'est pas suivie du numéro de version, il s'agit d'un client en version HTTP 0.9, sinon la version suit la ressource (GET / HTTP/1.0). La requête est suivie par une ligne blanche pour être prise en compte par le serveur ; cela permet de donner des arguments supplémentaires, comme des informations d'authentification.

En réponse à une requête, le serveur retourne la ressource demandée ; si elle n'existe pas, un message d'erreur est retourné. La réponse du serveur est du texte au format HTML.

Les requêtes peuvent être assorties d'un en-tête inséré entre la requête et la ligne blanche. Cet en-tête permet de passer un certain nombre de paramètres aux serveurs.

Il existe d'autres types de requêtes :

GET ressource HTTP/1.0

Nous avons déjà vu le GET. Des arguments peuvent être assortis à la ressource demandée en introduisant le premier argument avec un point d'interrogation et les arguments suivants avec un et commercial. Il est possible de spécifier la valeur de l'argument en séparant le nom de l'argument de sa valeur par le signe égal :

GET /ressource?premier_argument

ou :

GET /ressource?premier_argument&argument_suivant=valeur

Le format des arguments est libre ; cependant des guillemets doivent être utilisés lorsque des espaces sont inclus dans les noms ou les valeurs.

HEAD ressource HTTP/1.0

La requête HEAD ne retourne pas le corps de la ressource, mais seulement son en-tête. Cela permet d'obtenir des informations de mise à jour des ressources sans avoir à récupérer la totalité de la ressource.

Par exemple :

$ telnet www.erian-concept.com 80
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Thu, 05 Oct 2000 09:53:38 GMT
Server: Apache/1.3 (Unix)
Last-Modified: Fri, 17 Mar 2000 12:49:19 GMT
ETag: "97852-33c-38d229cf"
Accept-Ranges: bytes
Content-Length: 828
Connection: close
Content-Type: text/html

Connection closed by foreign host.
POST ressource HTTP/1.0

La méthode GET est principalement définie pour récupérer des ressources depuis le serveur. Mais comme il est possible de rajouter des arguments après le nom de la ressource, elle peut aussi être employée pour envoyer des informations sur le serveur, comme il est nécessaire de le faire lorsque l'on remplit un formulaire.

Cependant, la longueur de la requête a une limite et il est préférable d'utiliser la méthode POST pour envoyer des informations sur le serveur. Dans ce cas, les informations sont envoyées dans l'en-tête de la requête.

Cette méthode envoie des données vers la ressource spécifiée, généralement un script CGI.

PUT ressource HTTP/1.0

Replace la ressource située sur le serveur par les données qui sont envoyées. Cette requête nécessite des droits particuliers pour être acceptée et exécutée par le serveur.

DELETE ressource HTTP/1.0

Supprime la ressource sur le serveur. Cette requête nécessite des droits particuliers pour être acceptée et exécutée par le serveur.


next up previous contents index
Next: HTTP ``dynamique'' Up: Scripts CGI Previous: Scripts CGI   Contents   Index
© 1993 to 2001 Erian Concept