Vous êtes sur la page 1sur 41

HTTP

(HyperText Transfer Protocol)

Notions de base

web

Url

Encodage des urls

Types mime

WEB

Le web est bas sur trois parties :

URL : l'adresse d'une ressource web

HTML :le contenu d'une ressource

HTTP : le protocole applicatif qui permet de rapatrier la


ressource

URL(Uniform Resource Locator)

Permet didentifier une ressource sur le rseau, cest--dire :

une page Web

une image (seule ou utilise dans une page Web)

un programme

un fichier tlcharger...

syntaxe gnrale
<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]

<scheme name> : le protocole rseau utilis. Exp : http, ftp, usenet,...

<hierarchical part> : compos de :

nom du domaine ou adresse ip : commence par (//)


Chemin : similaire au systme de fichier
?<query> : optionnelle, sert transmettre des donnes

#<fragment> : optionnelle, sert cibler un fragment du document

Ex : http://fs.umbb.dz/Menumilieu/GlossaireLMD.doc

URL : query_string

C'est une chaine contenant des donnes transmettre au serveur, elle est
compos d'une suite de paires : (champ, valeur)
Syntaxe :
?champ1=valeur1&champ2=valeur2&...&champN=valeursN

Exemple :
utilisateur

mot de passe
valider

<formmethod="get"action="authenti.php">
<labelfor="txtUser">utilisateur:</label>
<inputtype="text"name="txtUser"/><br/>
<labelfor="txtLogin">login:</label>
<inputtype="password"name="txtPw"/>
<inputtype="submit"name="subVerif"
value="valider"/>
</form>

Le clique sur le bouton subVerif permet d'envoyer les donnes


saisies par l'utilisateur (utilisateur=>samy,mot de passe=>Pass) au
programme authenti.php, sous la forme du qurey-string suivant :

?txtUser=samy&txtPw=Pass&subVerif=valider

Encoding des URL

Certains caractres ne doivent pas figurer directement dans une URL,


ils sont soient interdits ou leur utilisation est dj prvue dans une
URL ou dans une requete HTTP (caractres rservs).

! * ' ( ) ; : @& = + $ ,
caractres rservs.

? #

sont des

En particulier le query_string doit tre converti pour satisfaire les


contraintes sur l'utilisation des caractres. Ce processus est URL
encoding
L'URL encoding utilise les rgles suivantes :

Les lettres (AZ et az), les nombres (09) et les caractres '.','-','~'
et '_' ne sont pas encods.

Le caractre ESPACE est remplac par un '+' ou ''%20''

Le reste des caractres est encod par la valeur hexadecimal de


son code ASCII ou du code UTF-8 lui correspondant

Encoding des URL

Ex :
'@' est encod ''%40''

'' est encod ''%C3%AA''

Dans l'exemple du formulaire prcdent si lutilisateur


saisie (mot de passe => ''@tre''), le query_string aura
aprs encodage la valeur suivante :
?txtUser=samy&txtPw=
%40%C3%AAtre&subVerif=valider

Dfinition : protocole

Un protocole de communication

est un langage qui codifie un ensemble de rgles que deux systmes


doivent respecter pour communiquer
Chaque rgle a pour but de raliser une ou plusieurs fonctionnalits
Lexcution dune rgle ncessite lajout dinformations aux donnes
transmises (mta-informations)
permet aux machines qui lutilisent de se comprendre

Ex. : mcanisme requte-rponse pour un protocole client-serveur


Exemples de fonctionnalits

assurer la transmission vers une machine identifie

assurer lindpendance des communications vis--vis du systme


dexploitation ou de la plate-forme

crypter les informations transmises


8

HTTP: Principe gnral

HTTP est un protocole applicatif client/serveur transactionnel bas sur le


principe requte/rponse

Clients : principalement les navigateurs web, applications spcifiques


(robot d'indexation, aspirateur web..), bibliothque de logiciels..

Serveurs : appel serveur http, les plus connus : Apache, IIS, NGINX

HTTP est sans tat : le client envoie une requte et le serveur rpond,
indpendamment des requtes prcdentes et sans conserver la moindre
information pour les requtes venir.
HTTP permet de vhiculer des ressources sur le World Wide Web

Initialement des fichiers html

gnralisation vers tous les types de fichier

Utilisation des type MIME pour distinguer entre les type de fichier chang

Type MIME

Pour distinguer le type des ressources changes, HTTP s'appuie sur


MIME : Multipurpose Internet Mail Extensions.
A la base prvu pour l'change d'Emails, MIME est adopt pour
l'change de documents webs. HTTP s'appuie sur MIME pour connaitre
le type de document qu'il vhicule.

Syntaxe : <type>/<sous-type>

Ex :

text/html, text/plain, text/xml, text/css ...

Image/jpeg, Image/tiff, Image/gif, Image/svg+xml,...

audio/mpeg,..

application/gzip, application/json, application/msword, application/pdf

10

HTTP:caractristiques

HTTP est un protocole textuel bas sur le codage ASCII


(American Standard Code for Information Interchange).
C'est un protocole applicatif (niveau 7 du modle OSI).
Il est dfini par les spcifications HTTP, diffuses par le
W3C (World Wide Web Consortium) http://www.w3.org.
Il sappuie gnralement sur une connexion transport TCP
(Transmission Control Protocol), et utilise le port 80 par
dfaut.

11

HTTP: transaction
Une transaction HTTP se dcompose en quatre phases :

12

HTTP: Exemple

Exemple pour la transaction :


http://www.monsite.dz/mesfichiers/index.html

Le navigateur analyse lURL

Le navigateur tablit une connexion TCP sur le port 80 ladresse


IP du nom de domaine www.monsite.dz (rsolution DNS)

Il envoie alors la commande GET /mesfichiers/index.html

Le serveur www.monsite.dz envoie le fichier index.html

La connexion TCP est libre par le serveur. La transaction est


termine. Le navigateur interprte et affiche la page
correspondante index.html

S il y trouve des rfrences des images, sons, etc , il va


gnrer de nouvelles transactions pour chacune dentre elles et
ractualisera son affichage au fur et mesure.
13

Versions de HTTP

HTTP 0.9 ~ 1990 (obsolte et n'est plus pris en charge)

Permet seulement de tlcharger des fichier texte statique (communication dans un


seul sens)

Pas de formulaire

Pas de statut de rponse

HTTP 1.0 ~ 1996

Pris en charge d'envoi de donnes vers le serveur

Pris en charge des type MIME

Introduction des enttes HTTP

HTTP1.1 ~ 1999

Requtes partielles (demander une portion d'une ressource)

Gestion d'hbergement virtuel (plusieurs sites sur le mme serveur web)

requtes multiple dans une seule connexion

14

Message HTTP

Un message HTTP peut tre une requte du client ou une


rponse du serveur
Syntaxe d'un message (requte|rponse)
Ligne d'introduction
<Titre entte>:<valeur entte> (optionnel:0..plusieurs)
Une ligne (obligatoire)
Corps de la requte (optionnel:0..1)

15

Requte HTTP (ligne d'introduction)


La ligne d'introduction d'une requte HTTP a la forme suivante :
<METHODE> <ressource (sous forme URL)> <version HTTP>

Mthode
majuscule obligatoire.
Valeurs possibles :GET, POST, HEAD, DELETE, OPTIONS, TRACE, CONNECT
Les plus utilises : GET et POST
Ressource

le chemin de la ressource demand dans la requte


Il commence par un /
Exemple :
/
/~samir/cours/http/intro.pdf
/mesdocuments/page1.html#ref
Version HTTP

HTTP/0.9 (obsolte) , HTTP/1.0 ou HTTP/1.1


16

Requte HTTP : les Mthodes

GET : demande pour obtenir des informations et des donnes


concernant lURI
POST : envoie de donnes (contenu du formulaire vers le
serveur, ). Ces donnes sont situes dans le corps du
message HTTP.
HEAD : demande pour obtenir des informations concernant
lURI (similaire GET mais sans rcupration des donnes)

PUT : enregistrement du corps de la requte lURI indiqu

DELETE : suppression des donnes dsignes par lURI

OPTIONS : demande des options de communication disponibles

17

Exemple requte GET


GET / HTTP/1.1
Host: www.umbb.dz
Accept-Language: fr

Rcuprer la page racine du site www.umbb.dz,


le navigateur indiquant au serveur qu'il prfre une version en
franais de la page s'il elle existe
Sans oublier la ligne vide sparant les enttes du corps du
message (corps vide dans l'exemple)
18

Exemple requte POST


POST /form-recours.php HTTP/1.1
Host: www.umbb.dz
Content-Length: 49
Content-Type: application/x-www-form-urlencoded
nom=salim&recours=SVP%20v%C3%A9rifier%20ma%20note

On reprend l'exemple de la page 5 :

Le clique sur le bouton submit d'un formulaire, gnre cette requte

Envoi de donnes vers la page /form-recous.php du www.umbb.dz

le navigateur doit indiquer au serveur :

la taille du corps du message au serveur


Le type du contenu : url-encod

19

Rponse HTTP (ligne d'introduction)


La ligne d'introduction d'une rponse HTTP a la forme suivante :
<Version HTTP> <statut > <commentaire statut>

Statut code : code numrique reprsentant la nature de la rponse (succs,


chec..)

Commentaire statut : texte expliquant le statut de la rponse

05 classes de statut de rponse :

1XX information
2XX succs
3XX redirection : La requte n'a pas t trouve, mais on sait ou elle est
4XX erreur client
5XX erreur serveur :requte correcte mais non satisfaite (problme
interne au
serveur, pas encore implment...)
20

Rponse HTTP
code statut classe : 1XX
Code
Statut

Texte Statut

description

HTTP
Version

100 Continue

le client doit continuer attendre la


rponse et envoyer des rappels de sa
requte au serveur. Le serveur signale
ainsi qu'il a compris la requte et qu'il
ne l'a pas encore rejete

1.1

101 Switching
protocol

Si le client exprime des requtes vers


d'autres versions de HTTP, le serveur
peut rpondre avec ce statut
Le nouveau protocole utiliser est
spcifi par l'en-tte Upgrade

1.1

21

Rponse HTTP
code statut classe : 2XX

Code

Statut texte

Description

200 OK

HTTP
1.0

201 Created

Peut tre utilis par exemple dans le cadre


d'un requte PUT pour indiquer que le
document a bien t upload.

204 No Content

La requte s'est bien droule, mais le


corps de la rponse est vide. (exemple
mthode DELETE)

206 Partial Content

Utilis dans le cadre de rcupration partiel


de ressource

22

Rponse HTTP
code statut classe : 3XX
Code
Statut

Texte Statut

description

300 Multiple
Choices

Signale au client que sa requte admis


plusieurs rponses (voir ngociation du
contenu)

301 Permanently
Redirect

Indique au client que la ressource demand


a chang de place dfinitivement. La
nouvelle URL sera envoy dans un entte
Location

304 Not Modified

Utilis dans le cadre de requtes


conditionnelles (Voir gestion du cache avec
les requtes conditionnelles)

307 Temporary
Redirect

Indique au client que la ressource demand


a chang de place dfinitivement. La
nouvelle URL sera envoy dans un entte
Location

HTTP
Version

23

Rponse HTTP
code statut classe : 4XX

Code
Statut

Texte Statut

Description

400 Bad Request

Code gnrique, il signifie que le serveur


n'a pas compris la requte du client

401 Unauthorized

Ce code indique que la requte mne vers


une ressource ncessitant authentification

403 Forbidden

la ressource demande vous est interdite


d'accs.

404 Not Found

la ressource demande n'a pas t trouv,


souvent ils'agit d'une erreur dans URL

406 Not
Acceptable

Le serveur ne trouve pas de ressources qui


correspond aux caractristiques dcrites
dans l'entte Accept de la requte

HTTP
Version

24

Exemple Rponse HTTP(1/2)


HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Nov 2013 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html
<!DOCTYPE html... (les 29769 octets de la page web demande)

25

Exemple Rponse HTTP(2/2)


HTTP/1.1 404 Not Found
Date: Mon, 18 Nov 2013 14:33:02 GMT
Server: Apache
Content-Length: 10732
Content-Type: text/html ; charset=iso-8859-1
<!DOCTYPE html... (page personnalise informant
l'utilisateur que la page demande n'est pas trouve)

26

Enttes HTTP- concepts

Les enttes HTTP permettent au serveur comme au client de schanger des


informations supplmentaires
Syntaxe gnrale : nom_entit : valeur_entit
Aucune restriction sur la casse (majuscule ou minuscule),mais la convention est de
commencer la 1ere lettre en Majuscule et le reste en minuscule
On peut donner plusieurs valeurs, spares par ','

exemple Accept : text/html, text/palin

Les enttes peuvent appartenir un des groupes suivants :

Enttes gnriques : informations concernant la transaction (requte/rponse)

Enttes de requte : informations concernant la requte

Enttes de rponse : informations concernant la rponse

Enttes de l'entit (corps du message ) : informations concernant le corps du


message

27

Enttes HTTP

Les enttes qu'on trouvent dans une requte HTTP sont :

Enttes gnriques, enttes de requtes et enttes


d'entit

Les enttes qu'on trouvent dans une rponse HTTP sont :

Enttes gnriques, enttes de rponse et enttes


d'entit

28

Enttes HTTP
enttes gnriques

Principalement l'entte Date

Donne la date et l'heure laquelle le message a t mis.

L'heure est exprim est en GMT (heure international)

Exemple
Date: Mon, 4 Nov 2013 12:00:00 GMT

d'autres enttes gnriques :

Connection, Cache-Control, Pragma,...

29

Enttes HTTP
enttes de requtes

Host : reprsente le nom du site. Le seul entte obligatoire partir de HTTP/1.1

Accept: dfinit les types Mime accepts

Accept-charset : spcifie les types de jeux de caractres accepts

Accept-encoding : spcifie les types de transformation (compression) sur le messages


acceptes

Accept-language : spcifie les langues accepts

From: donne l'e-mail de l'utilisateur du client (navigateur). Ncessite un accord.

Referer: URL de l'objet l'origine de la requte (URL de la page dans laquelle il y a le lien)

User-Agent: l'identifiant du navigateur. Sert pour adapter la


rponse au navigateur

If-Modified-Since, If-Unmodified-Since: permet de faire des GET conditionnel par rapport la


dernire date de modification de la ressource
If-Match,If-None-Match :permet de faire des GET conditionnel par rapport Etag.

30

Enttes HTTP
enttes de rponse

Server: le nom du serveur web, sa version, ainsi que des


commentaires complmentaires
Location :contient la vritable URL de la ressource, utiliser
pour la redirection ou lors de d'une cration de ressource
Etag: identificateur d'une version de la ressource, utiliser
dans la gestion du cache
Retry-After : le serveur indqiue au client qu'il ressayer
aprs un nombre de secondes. Exemple Retry-After:120.
Accept-Ranges : le serveur indique au client s'il accepte les
requtes partielles. Valeurs possibles: ''bytes''
31

Enttes HTTP
enttes de l'entit

Content-Type : identifie le type de l information (corps) - types courants:


text/plain, text/html, image/gif, image/jpeg

Content-Length : nombre d octets dinformation dans le cas d'une requte elle est
obligatoire avec POST, inutile sinon
Content-Encoding : utile si linformation est compresse ou autrement code indique la mthode de codage (zip,gzip, deflate ...)
Content-Language : langue(s) utilise dans le corps du message
Content-Location: URL effective de la ressource, elle est complmentaire l'URL
indique dans la requte. Utilis lorsque l'URL de la requte peut cibler plusieurs
ressources (voir ngociation du contenu).
Last-Modified:date de la dernire modification de la ressource
Allow : donne une lise des mthodes autoris avec la ressource identifi par l'URL
de la requte. Souvent en rponse d'une requte avec la mthode OPTIONS

32

Ngociation du contenu
le principe

Une ressource peut tre disponible selon diffrentes reprsentations.


diffrents langages ou pour diffrents types de mdia, ou une combinaison des deux.
La ngociation de contenu (content ngociation) est un mcanisme qui permet de
renvoyer (ou rcuprer selon le cas) le document qui rpondra au mieux aux attentes
de l'utilisateur

Le client spcifie les prfrences de l'utilisateur pour une ressource donnes.


Prfrences ?=> ensemble denttes
type de mdia : Accept,
la langue : Accept-Language,
type de compression de donnes : Accept-enconding,
type de charset : Accept-Charset
Le serveurs utilise un algorithme pour trouver la meilleurs ressource qui convient aux
prfrences indiques

33

Ngociation du contenu
le fonctionnement
1.Requte GET ressource + Prfrences
alt
Si 1 seule ressource rpond aux
prfrences exprimes :
Rponse 200 OK+ 1 seule ressource

Serveur

Si plusieurs ressources rpondent aux


prfrences avec le mme degr :
Rponse 300 Multiple Choice
+ les URLs des ressources candidates

Client

Si une la ressource existe, mais elle ne


correspond pas aux prfrences
exprimes :
Rponse 406 Not Acceptable
+ les URLs des ressources candidates
34

Ngociation du contenu
Valeurs possibles pour media-type

type/sous-type: text/html, image/jpeg,...

Type/*

*/*

Plusieurs valeurs peuvent tre utilis, spares par des virgules ,

Accept : text/html, text/plain

on peut rajouter un qualificatif q pour pondrer les prfrences

q : est un nombre rel compris entre 0 et 1 spar de la valeurs d'une


prfrence par un point-virgule ;

La valeur par dfaut de q est 1

Une valeur avec un qualificatif q=0 implique que cette valeur n'est souhaitable

35

Ngociation du contenu
Exemple de requtes
Accept: audio/*; q=0.2, audio/basic
veut dire : Je prfre que la ressource soit de type audio/basic,
sinon envoi n'importe quel type d'audio

Accept: text/plain; q=0.5, text/html, text/xml; q=0.8, text/x-c


veut dire : text/html et text/x-c sont mes types de mdia prfrs
mais s'ils n'existent pas envois le media text/xml, si cette dernire
n'existe pas envois le media text/plain

Accept-language: ar , fr;q=0, en-gb;q=0.8


veut dire : Je prfre que la ressource soit en Arabe, sinon c'est
en aglais (Grande Bretagne) , mais je ne veut pas qu'elle soit en
francais

36

Notion du Cache

Une page HTML est souvent constitue dinformations (textes ou


images) ne subissant aucune modification pendant plusieurs jours.
Il devient alors intressant de mettre en cache les objets pour lesquels
nous avons dj effectu une requte.
Deux types de cache

Cache du navigateur : permet au Browser de fournir immdiatement les


objets prsents dans le cache sans avoir effectuer une requte auprs
du serveur possdant lobjet.
Cache proxy : permet au proxy de fournir aux clients les objets prsents
dans son cache sans quil doive effectuer une requte HTTP auprs du
serveur possdant lobjet.
Ce cache est la disposition de tous les clients utilisant le proxy

37

Cache et Requtes conditionnelles


Get news.htm
If-Modified-Since: Thu, 1 Apr 2013 08:05:31 GMT

Serveur

HTTP/1.1 304 Not Modified

Client

Un Get conditionnel peut tre effectu en incluant len-tte If-Modified-Since dans


une requte Get HTTP.
Cet en-tte permet de spcifier au serveur HTTP que lon ne dsire recevoir le
fichier demand que sil a subit des modifications depuis la date indique dans
len-tte.
Le statut 304 est retourn dans la rponse et le corps du message est vide si la
ressource n'a pas chang
38

Cache et Requtes conditionnelles


1. Le client demande une premire fois un document
GET /test.php HTTP/1.1
2. Le serveur fourni le document
HTTP/1.x 200 OK
Date: Thu, 08 Jul 2013 17:42:26 GMT
Last-Modified: Thu, 08 Jul 2013 17:33:54 GMT
Etag: "82e81980-27f3-4a6ae480"

39

Cache et Requtes conditionnelles


3. Le client demande une deuxime fois le document, et envoie les
rfrences de la version dont il dispose dj (en cache)
GET /test.php HTTP/1.1
If-Modified-Since: Thu, 08 Jul 2013 17:33:54 GMT
If-None-Match: "82e81980-27f3-4a6ae480"
4. Le serveur retourne un avis de non-modification car le document na pas
t modifi depuis le dernier passage du client
HTTP/1.x 304 Not Modified
Date: Thu, 08 Jul 2013 17:46:31 GMT
Etag: "82e81980-27f3-4a6ae480"

40

Cache et Requtes conditionnelles


5. Le client demande une troisime fois le document
GET /test.php HTTP/1.1
If-Modified-Since: Thu, 08 Jul 2013 17:33:54 GMT
If-None-Match: "82e81980-27f3-4a6ae480"
6. Le serveur fourni la nouvelle version du document car celui-ci a t modifi
HTTP/1.x 200 OK
Date: Thu, 08 Jul 2013 17:48:54 GMT
Last-Modified: Thu, 08 Jul 2013 17:48:52 GMT
Etag: "82e81980-2bf2-7ff14900"
<html>...</html>

41