[x]

OFPPT Maroc

Guide des formations professionnelles

Vous avez téléchargé 0 fois ce fichier durant les dernières 24 heures. La limite est fixée à 5 téléchargements.
Vous avez téléchargé 0 fichier(s) durant ces 24 dernières heures. La limite est fixée à 5 téléchargements.

Cours de technologie du web : protocole HTTP

Télécharger

Cours de technologie du web : protocole HTTP

Comprendre et programmer le protocole HTTP

Ces quatre lettres vous sont forcément familières, c’est peut être la suite de lettres la plus utilisée au monde. Chaque jour en tapant http:// dans votre navigateur web, vous utilisez ce protocole pour communiquer avec un serveur sur Internet. Quel est le fonctionnement de ce protocole et comment écrire un programme ? HyperText Transfert Protocol, voici la signification de l’acronyme qui fait le bonheur des internautes au quotidien. Traduction primaire: protocole de transfert de document hypertexte. Les documents hypertexte sont simplement les documents html des premières heures, en effet la première version du protocole était exclusivement réservée aux pages web. La large acceptation de ce protocole, sa simplicité de mise en œuvre, la configuration des firewalls et routeurs dans les entreprises ont ensuite permis le développement de ce protocole dans de nombreuses autres applications. La majorité des utilisations reste la consultation de serveurs web et c’est dans cet esprit que ce protocole va être expliqué et que les exemples seront donnés.

Un protocole client serveur Le protocole HTTP est une implémentation de type client serveur des plus simples qui soit. Le client est généralement votre navigateur web (mozilla, konqueror…) mais l’objectif de cet article est de vous donné toutes les bases pour écrire vos propres clients. Celui-ci envoie une requête à un serveur (apache …) qui lui répond. C’est un protocole en mode texte, généralement utilisé sur une connexion TCP, dédié au transfert de ressource. Il n’est pas dédié à l’échange de fichiers même si dans la pratique c’est souvent le cas avec les sites web. Il devient donc extrêmement simple d’étudier son fonctionnement en utilisant le programme telnet. Pour se connecter au serveur web de linuxmag, il suffit de faire :

telnet www.linuxmag-france.org 80

Le port 80 est celui généralement utilisé par le serveur pour recevoir une connexion. Vous retrouverez cette valeur si vous jetez un œil dans le fichier /etc/services. Une fois la connexion établie, vous pouvez envoyer votre requête HTTP :

GET / http/1.0

(Suivi d’une ligne blanche)

et si tout se passe bien vous recevrez une réponse de ce type

HTTP/1.1 200 OK

Date: Mon, 26 Aug 2002 14:03:19 GMT

Server: Apache/1.3.23 (Unix) Debian GNU/Linux PHP/4.1.2

X-Powered-By: PHP/4.1.2

Connection: close

Content-Type: text/html; charset=iso-8859-1

La requête HTTP La requête utilisée dans cet exemple est la plus simple que l’on puisse trouver, elle se compose d’un seule ligne qui comprend trois éléments : la méthode, l’url (elle identifie la ressource, dans la plupart des cas sur Internet il s’agit d’un simple fichier texte ou d’une image) et la version du protocole HTTP utilisé (HTTP/1.0 ou HTTP/1.1). En plus de cette ligne on peut trouver un certain nombre de champ (1 par ligne) dont la forme est toujours la même, le nom du champ, suivi de : et d’un espace et la valeur que l’on veut lui donner (toujours suivi des caractères \r et \n). Les caractères \r et \n correspondent respectivement au retour chariot et saut de ligne. Vient ensuite une ligne vide, composée donc seulement des deux caractères \r et \n et le corps de la requête. Une requête a donc la forme suivante :

Méthode url HTTP/1.0\r\n

Champ1 : valeur 1\r\n

Champ2 : valeur 2\r\n

\r\n

Ceci est le corps de ma requête …

…

Les deux méthodes vraiment utilisées sont GET et POST (les amateurs d’html reconnaîtront des mots clefs familiers à la construction d’un formulaire). La méthode GET est la plus simple car le corps du message dans ce type de requête est vide. La méthode POST permet d’envoyer des informations au serveur dans le corps du message d’une requête HTTP. Lorsque des informations sont envoyées au serveur à l’aide de la méthode GET, elles sont encodées à la suite de la ressource après le symbole ‘?’ dans l’url. La méthode HEAD sert essentiellement pour les applications de cache. En effet la réponse HTTP renseigne sur les propriétés de la ressource demandée (date de dernière modification, …), il est donc intéressant pour économiser du temps de traitement et de la bande passante de pouvoir ne demander que ces informations et pas le contenu de la ressource (qui se trouve quand même très souvent être un simple fichier). Dans la pratique bien peu de serveurs autorisent les actions de type PUT et DELETE pour des raisons évidentes de sécurité.

Les champs d’une requête http

La première ligne d’une requête peut être suivi d’un certain nombre de champs permettant de donner quelques renseignements sur le client (souvent un navigateur) et son utilisateur (généralement vous). Il existe de nombreux champs, et seuls les plus utilisés ou les plus utiles pour la programmation de petits clients seront expliqués; la rfc du protocole vous permettra de voir toutes les possibilités offertes.

…

Le champ Accept est important car vous pouvez indiquer la liste des formats de données que vous souhaitez recevoir. Les codes suivant sont particulièrement intéressants : image/gif, image/jpeg, image/png. En l’absence de ce champ, le serveur n’enverra pas de fichier d’image, ils sont donc indispensables pour écrire un outil d’aspiration d’images sur le web. Le Champ Content-Length est particulièrement utile pour les requêtes POST (en effet, la valeur de ce champ est toujours nulle pour les requêtes GET) car certains serveurs refusent de traiter la requête en l’absence de ce champ. Pour l’écriture d’un outils de synchronisation entre un site web et une autre source de données, utilisez le champ If-Modified-Since, suivi de la dernière date de synchronisation, il indique au serveur de n’envoyer le contenu de la ressource que si il a changé depuis cette date. Le champ Host indique le nom du domaine destination de la requête. Il est fréquent qu’un serveur web soit en charge de plusieurs sites web de noms de domaines différents, ce champ permet de faire la distinction. Ce champ est obligatoire avec la version HTTP/1.1. Les auteurs de sites web n’apprécient guère l’usage des aspirateurs (tel que wget) car ils permettent la consultation hors ligne de leur site et empêche l’affichage de bannières publicitaires.

Une technique classique consiste à vérifier le Referer d’une requête avant de répondre. Le Referer indique l’url de la ressource précédemment consultée (dans le cas d’un navigateur, c’est l’url de la page qui contenait le lien sur lequel vous venez de cliquer). La plupart des outils utilisant HTTP servent à récupérer de façon automatique des données (ou des ensembles de fichiers) sur le web, il est donc parfois important de renseigner ce champ pour donner l’impression qu’un vrai utilisateur est derrière son navigateur. Pour les mêmes raisons que précédemment, il est toujours plus intéressant pour un utilitaire de récupération de fichiers sur Internet de se faire passer pour un navigateur ordinaire. Le champ User-Agent permet de vous faire passer pour le dernier navigateur à la mode, celui que tous les sites web acceptent (le navigateur Opera utilise cette technique).

Evaluation :
Total des Votes : 0
Soyez le premier à écrire un commentaire sur ce fichier!
Veuillez vous identifier ou vous enregistrer.