0% ont trouvé ce document utile (0 vote)
6 vues25 pages

Notions essentielles sur le protocole HTTP

Http

Transféré par

Salhi Azize
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues25 pages

Notions essentielles sur le protocole HTTP

Http

Transféré par

Salhi Azize
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Notions sur le protocole HTTP

P. Renevier remasterisé S. Verel


Modèles de programmation via le service Web
 Service HTTP : Modèle de document dynamique avec CGI
Requête CGI

Navigateur Un
Protocole HTTP HTTPD CGI
HTML prog.
Document généré 80
Machine serveur
TCP/IP
 Le serveur HTTP dispose une interface, dit CGI (Commun Gateway Interface),
permettant d’invoquer l’exécution d’un programme quelconque se trouvant sur la
même machine serveur selon un ordre venant du client web :
● l’ordre d’exécution sera sous forme d’un hyperlien avec quelques conventions
spécifique
● Le serveur HTTP reçoit cet ordre, il organisera ensuite l’exécution du programme
demandé. La communication entre le programme et le serveur HTTPD est assurée par :
les entrées/sorties standard (STDIN et STDOUT) et un ensemble de variables
d’environnement du serveur HTTPD
● Le résultat de l’exécution sera envoyé par le serveur HTTP au client web
2
Modèles de programmation via le service Web
 NOTION d’URL (Uniform Resource Locator) :
 Un URL représente une identification d’un endroit où stocke une ressource sur le
réseau Internet
 Une ressource peut-être stockée à plusieurs endroits, elle possède dont un ou
plusieurs URL
 Format d’un URL : (note : le symbole [xxx] signifie que xxx est facultatif)

Protocole:// Hôte [:Port] Chemin Nom [#Ancre] [?Paramètres]

 Exemple 1 : une ressource statique est un fichier html

http:// [Link] /~verel/ [Link]

 Exemple 2 : une ressource dynamique générée par un programme cgi :


http:// [Link] /cgi-bin/Vitesse2/ [Link] ?Keywords=unsa&SearchEngine=Goo
gle&Kind=Search&InfoSpace=&MaxInf
oNumber=100&VitesseMode=Win

3
Codage d’une URL
Tabulation %09 < %3C
Espace %20 = %3D
" %22 > %3E
# %23 ? %3F
% %25 @ %40
& %26 [ %5B
( %28 \ %5C
) %29 ] %5D
+ %2B ^ %5E
, %2C ' %60
. %2E { %7B
/ %2F | %7C
: %3A } %7D
; %3B ~ %7E
4
Modèles de programmation via le service Web
 NOTION d’URI (Uniform Resource Identificator) :
 Un URI représente une identification de l’origine d’une ressource sur le réseau
Internet
 Une ressource peut-être stockée à plusieurs endroits, mais ces copies ont la
même origine. Une ressource a donc un et un seul URI
 Format d’un URI : <type document | Propriétés | Origine>

 Exemple : La version 4.01 de HTML impose la spécification de l’URI de


définition de ce langage (un DTD) dans la première ligne du document :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"


"[Link]

5
Modèles de programmation via le service Web
 Le passage de paramètres à un programme CGI :
 Format de paramètre : en texte ASCII

 chaque paramètre comprend 2 opérandes «Nom-de-variable » et «Valeur-de-


variable » reliées par le symbole ‘=‘
 les paramètres sont reliés par le symbole ‘&’

 Convention : certaines règles de transformation automatique sont appliquées : le


caractère d’espace (‘ ‘) est remplacé par ‘+’, …

var1 = val1 & var2 = val2 & … & varn = valn


 Modes de passage de paramètres :
 GET : la chaîne de paramètres est envoyée avec l’URL après le caractère ‘?’ et sera
déposée dans une variable d’environnement, appelé QUERY_STRING du service
HTTP (sur la machine serveur). Avantage : simple; Inconvénient : taille limitée à
200 caractères
 POST : la chaîne de paramètre sera envoyée indépendamment de l’URL et dirigée
vers le fichier STDIN (Standard INPUT) du programme CGI. Avantage : taille
illimitée, traitement standard

6
Modèles de programmation via le service Web
 Le retour de données depuis d’un programme CGI au serveur HTTP :
 Format de données de retour : Texte HTML

 Mode de passage du CGI vers le serveur HTTP : les données sorties du


STDOUT (Standard OUTPUT) du programme CGI seront redirigées à l’entrée
standard ( stdin) du service HTTP qui les transmet au Client Web
 Ce résultat peut être n’importe quel document multimédia, depuis le simple
texte ascii jusqu’à la vidéo. Dans le cas où la requête d’un client se limite à
demander au serveur de lui fournir un fichier, le serveur se base sur l’extension
de ce fichier pour déterminer son type
 Conformément au protocole HTTP, il faut alors transmettre ce type dans l’en-
tête, avec la clause ‘Content-type: typeDocument’, pour que le navigateur sache
comment décrypter les informations qui lui proviennent par la suite
 Exemple : Pour un fichier HTML par exemple, l’extension est le plus souvent
.html, et la valeur de typeDocument est ‘text/html’

7
Modèles de programmation via le service Web
 M odèle de pr ogr ammat ion Client /Ser veur sur I nt er net :
une applicat ion CL /SV sur le r éseau I nt er net est const it ué de 2 par t ies :
 Un programme Client de l’application et
 Un programme Serveur de l’application

Programme Programme
Protocole de l’app.
Client de l’app. Serveur de l’app.

TCP/IP

Programme Client Programme Serveur


• Interface d’utilisateur • Réalisation de services
• Non permanent • Processus permanent
• Orienté graphique • Orienté traitement
• Langage intermédiaire • Ports TCP exclusifs

8
Modèles de programmation via le service Web
 Modèle de programmation web à 2-tiers :
 Tiers Client : Programme interface comprenant des outils de présentation et de
programmation : HTML, Plug-in, JavaScript, Style, Applet Java
 Tiers Serveur : Programme de services, appelé « objets de métiers », développé
depuis un environnement de développement normalisé, dit pré processeur de
HTTP, Par exemple : PHP, JSP, ASP

Partie client Partie serveur


Protocole App.
de l’application de l’application

Navigateur
Outils Pré
HTML HTTP HTTPD processeur
Prog.
TCP/IP 80 TCP/IP

9
Modèles de programmation via le service Web
 Les limites de la première approche
 Côté Client : absence des outils de programmation et les outils de présentation
sont limités à la capacité du langage HTML
 Côté Serveur : absence des outils de développement adaptés, la communication
avec le serveur HTTP est à automatiser
 Côté Protocole : les paramètres sont passés en mode texte avec un format
imposé (absence de sécurité et capacité limitée) et deux modes de
récupération fixes (GET et POST)

Renforcer les Normaliser les


Automatiser
outils de outils de
le processus de
programmation développement
communication
et de présentation du côté
Client/Serveur
du côté CLIENT SERVEUR
10
Modèles de programmation via le service Web
 Modèle de programmation web à 2-tiers :
 Outils de présentation pour CLIENT :

 HTML/XML : Langage cadre permet d’une présentation de base et une intégration


des différents modes de programmations et de présentation multimédia
 CSS2 : Langage de définition de style de présentation pour les balises HTML. Il
permet d’une présentation plus fine et paramétrable
 Plug-in : Des programme d’interprète des types de données multimédia permettant
au navigateur d’afficher ces données (word, excel, …)
 Outils de programmation pour CLIENT :

 JavaScript : Langage de programmation intégré dans le HTML, permettant de


manipuler les objets documentaires de HTML, de créer et capturer et manipuler des
évènements sur interface et d’effectuer des calculs
 Applets Java, Flash, etc.

11
Modèles de programmation via le service Web
 Modèle de programmation web à 3-tiers :

1er-Tiers de « Client » : 2e-Tiers d’ «Objets de 3e-Tiers de «Bases de


Programmation interface métier » : Programmation de données » :
d’utilisateur services liés à l’application Programmation des
réelle sources de données pour
l’application

Partie client Partie serveur Partie SGBD


Protocole App. SQL
de l’application de l’application de l’application

Navigateur Médiateur
Outils Pré
HTML HTTPD de base de SGBD
Prog. HTTP processeur
données
TCP/IP 80 TCP/IP TCP/IP TCP/IP

12
Protocole HTTP

 HTTP (HyperText Transfer Protocol) : protocole le plus utilisé sur


Internet depuis 1990.
 La version 0.9 était uniquement destinée à transférer des données sur
Internet (en particulier des pages Web écrites en HTML).
 La version 1.0 du protocole (la plus utilisée) permet désormais de
transférer des messages avec des en-têtes décrivant le contenu du message
en utilisant un codage de type MINE.
 Transfert de fichiers localisés grâce à une URL entre un navigateur (le
client) et un serveur Web (httpd).
 Le navigateur effectue une requête HTTP

 Le serveur traite la requête puis envoie une réponse HTTP

 RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0


 RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1

13
Requête HTTP
Requête envoyée au serveur par le navigateur

Composée des éléments suivants :


 Une ligne de requête (3 éléments séparés par un espace)
 La méthode
 L'URL
 La version du protocole utilisé par le client (généralement HTTP/1.0)

 Les champs d'en-tête de la requête: ensemble de lignes facultatives


donnant des informations supplémentaires sur la requête et/ou le client
(navigateur, OS)
 Ces lignes sont composées d'un nom (type d'en-tête) suivi de deux points (:) et
de la valeur
 Le corps de la requête: ensemble de lignes optionnelles séparées des
lignes précédentes par une ligne vide
 Permet (par exemple) un envoi de données par une commande POST lors de
l'envoi de données au serveur par un formulaire

14
Requête HTTP

 Syntaxe (<crlf> = saut de ligne):


METHODE URL VERSION<crlf>
EN-TETE : Valeur<crlf>
...
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REQUETE
 Exemple de requête HTTP:
GET [Link] HTTP/1.0
Accept : text/html
If-Modified-Since : Saturday, 15-January-2000 [Link] GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

15
Commande d’une requête http

Commande Description

GET Requête de la ressource située à l'URL spécifiée

Requête de l'en-tête de la ressource située à l'URL


HEAD
spécifiée
Envoi de données au programme situé à l'URL
POST
spécifiée

PUT Envoi de données à l'URL spécifiée

DELETE Suppression de la ressource située à l'URL spécifiée

16
Entêtes d’une requête http
Nom de l'en-tête Description
Type de contenu accepté par le navigateur (par
Accept
exemple text/html).
Accept-Charset Jeu de caractères attendu par le navigateur
Accept-Encoding Codage de données accepté par le navigateur
Langage attendu par le navigateur (anglais par
Accept-Language
défaut)
Authorization Identification du navigateur auprès du serveur
Content-
Type de codage du corps de la requête
Encoding
Content-
Type de langage du corps de la requête
Language

17
Entêtes d’une requête http
Nom de l'en-tête Description
Content-Length Longueur du corps de la requête
Type de contenu du corps de la requête (par exemple
Content-Type
text/html).
Date Date de début de transfert des données
Utilisé par les machines intermédiaires entre le browser et
Forwarded
le serveur
From Permet de spécifier l'adresse e-mail du client
Permet de spécifier que le document doit être envoyé s'il a
If-Modified-Since
été modifié depuis une certaine date
Link Relation entre deux URL
Orig-URL URL d'origine de la requête
Referer URL du lien à partir duquel la requête a été effectuée
Chaîne donnant des informations sur le client, comme le
User-Agent nom et la version du navigateur, du système
18
d'exploitation
Réponse HTTP

 Une ligne de statut:


 La version du protocole utilisé

 Le code de statut

 La signification du code

 Les champs d'en-tête de la réponse: ensemble de lignes facultatives


donnant des informations supplémentaires sur la réponse et/ou le serveur.
 Ces lignes sont composées d'un type d'en-tête suivi de deux points (:) et de la
valeur de l'en-tête
 Le corps de la réponse: contient le document demandé

19
Réponse HTTP

 Syntaxe
VERSION-HTTP CODE EXPLICATION<crlf>
EN-TETE : Valeur<crlf>
...
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REPONSE
 Exemple de réponse HTTP:
HTTP/1.0 200 OK
Date : Sat, 15 Jan 2000 [Link] GMT
Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2000 [Link] GMT

20
Entêtes des réponses HTTP
Nom de l'en-tête Description
Content-Encoding Type de codage du corps de la réponse
Content-Language Type de langage du corps de la réponse
Content-Length Longueur du corps de la réponse
Type de contenu du corps de la réponse (par exemple
Content-Type
text/html).
Date Date de début de transfert des données
Expires Date limite de consommation des données
Utilisé par les machines intermédiaires entre le browser
Forwarded
et le serveur
Redirection vers une nouvelle URL associée au
Location
document
Server Caractéristiques du serveur ayant envoyé la réponse
21
Code réponse HTTP
Code Message Description
10x Message d'information Ces codes ne sont pas utilisés dans la version 1.0 du protocole
20x Réussite Ces codes indiquent le bon déroulement de la transaction
200 OK La requête a été accomplie correctement
Elle suit une commande POST, elle indique la réussite, le corps
201 CREATED du reste du document est sensé indiquer l’URL à laquelle
le document nouvellement créé devrait se trouver.
La requête a été acceptée, mais la procédure qui suit n'a pas
202 ACCEPTED
été accomplie
PARTIAL Lorsque ce code est reçu en réponse à une commande GET,
203
INFORMATION cela indique que la réponse n'est pas complète.
Le serveur a reçu la requête mais il n'y a pas d'information à
204 NO RESPONSE
renvoyer
Le serveur indique au navigateur de supprimer le contenu des
205 RESET CONTENT
champs d'un formulaire
Il s'agit d'une réponse à une requête comportant l'en-tête
206 PARTIAL CONTENT
range. Le serveur doit indiquer l'en-tête content-Range

22
Code réponse HTTP
Code Message Description
Ces codes indiquent que la ressource n'est plus à
30x Redirection
l'emplacement indiqué
Les données demandées ont été transférées à une
301 MOVED
nouvelle adresse
Les données demandées sont à une nouvelle URL,
302 FOUND mais ont cependant peut-être été déplacées
depuis...
Cela implique que le client doit essayer une nouvelle
303 METHOD adresse, en essayant de préférence une autre
méthode que GET
Si le client a effectué une commande GET
NOT conditionnelle (en demandant si le document a été
304
MODIFIED modifié depuis la dernière fois) et que le
document n'a pas été modifié il renvoie ce code.
23
Code réponse HTTP
Code Message Description
40x Erreur due au client Ces codes indiquent que la requête est incorrecte
La syntaxe de la requête est mal formulée ou est
400 BAD REQUEST
impossible à satisfaire
Le paramètre du message donne les spécifications des
formes d'autorisation acceptables. Le client doit
401 UNAUTHORIZED
reformuler sa requête avec les bonnes données
d'autorisation

Le client doit reformuler sa demande avec les bonnes


402 PAYMENT REQUIRED
données de paiement

403 FORBIDDEN L'accès à la ressource est tout simplement interdit

Classique! Le serveur n'a rien trouvé à l'adresse


404 NOT FOUND
spécifiée.

24
Code réponse HTTP
Code Message Description
Ces codes indiquent qu'il y a eu une erreur interne du
50x Erreur due au serveur
serveur

Le serveur a rencontré une condition inattendue qui l'a


500 INTERNAL ERROR empêché de donner suite à la demande (comme quoi il
leur en arrive des trucs aux serveurs...)

Le serveur ne supporte pas le service demandé (on ne peut


501 NOT IMPLEMENTED
pas tout savoir faire...)
Le serveur a reçu une réponse invalide de la part du serveur
502 BAD GATEWAY auquel il essayait d'accéder en agissant comme une
passerelle ou un proxy
Le serveur ne peut pas vous répondre à l'instant présent, car
le trafic est trop dense (toutes les lignes de votre
503 SERVICE UNAVAILABLE
correspondant sont occupées veuillez rappeler
ultérieurement)

La réponse du serveur a été trop longue vis-à-vis du temps


504 GATEWAY TIMEOUT pendant lequel la passerelle était préparée à l'attendre (le
temps qui vous était imparti est maintenant écoulé...)
25

Vous aimerez peut-être aussi