Hyper Text Transfer Protocol
(Rappel)
Youssef Saadi
Master Informatique Décisionnelle
Faculté Des Sciences Et Techniques
Université Sultan Moulay Slimane Béni-Mellal
AU: 2019/2020
HTTP : HyperText Transfert Protocol
(RFC 1945 et 2068)
Il s’agit d’une norme régissant les échanges (demande d’un document,
envoi d’informations, envoi d’un document) entre un client Web et un
serveur Web.
Il s’agit d’un protocole texte (protocole en mode de lignes de caractères)
qui utilise la liaison TCP pour la communication entre un client et un
serveur.
User Agent HTTPD
(Mozilla) (Serveur HTTP) Index.htm
Port 80
www.msi.unilim.fr
2 Rappel sur HTTP (Youssef Saadi / v1.1)
Introduction
Fonctionnement (très simple en HTTP/1.0)
Connexion
Demande (GET) d ’un document
Renvoi du document ou d ’une erreur
Déconnexion
HTTP est un protocole sans états « Stateless Protocol »
Problème d’identification du client lors d’une session.
Cookies, HTTP v1.1 (RFC 2068)
3 Rappel sur HTTP (Youssef Saadi / v1.1)
Format des requêtes HTTP
Dans un navigateur web (Mozilla, Chrome, Internet Explorer, …), on
demande le document référencé par l’URL suivante:
La requête HTTP qui sera générée par le navigateur est la suivante :
4 Rappel sur HTTP (Youssef Saadi / v1.1)
Format des requêtes HTTP
Une requête HTTP est composé de deux parties principales :
Un en-tête contenant des lignes dont chacune se termine par les caractères
CRLF.
Un corps éventuel qui contient les informations envoyées au serveur dans le
cas d’une commande POST.
L’en-tête et le corps éventuel sont séparés par une ligne vide c-à-d CRLF.
En tête------------------------
Ligne de commande
Ligne 2
…
Ligne n
Corps--------------------------
5 Rappel sur HTTP (Youssef Saadi / v1.1)
Format des requêtes HTTP
L’en-tête débute par une ligne de commande de la forme :
Méthode URL Version du protocole HTTP
Exemple : GET ~poulingeras/index.htm HTTP/1.1
Les principales méthodes
Récupération d ’un document
méthode GET
Soumission d ’un formulaire
méthodes GET ou POST
Envoi de Document et Gestion de Site
méthodes PUT, DELETE
Demande de renseignements sur un document
méthode HEAD (date de création, taille du document, etc.).
6 Rappel sur HTTP (Youssef Saadi / v1.1)
URL/URI
Une URI (Uniform Ressource Identifier) est une chaîne de caractère
identifiant une ressource physique ou abstraite.
Une URL est une URI qui identifie une ressource à travers un mécanisme
d’accès (par exemple : un protocole réseau + chemin d’accès).
7 Rappel sur HTTP (Youssef Saadi / v1.1)
Format des réponses HTTP
Les réponses du serveur sont constituées de deux parties :
Un en-tête contenant notamment une ligne de statut indiquant si la
demande a pu être satisfaite.
Un corps contenant le document demandé
L’en-tête et le corps éventuel sont séparés par une ligne vide c-à-d CRLF.
Suite à la requête suivante :
le serveur peut répondre par :
8 Rappel sur HTTP (Youssef Saadi / v1.1)
Format des réponses HTTP
9 Rappel sur HTTP (Youssef Saadi / v1.1)
Format des réponses HTTP
La ligne de statut de l’en-tête de la réponse se présente sous la forme
suivante :
Version HTTP CODE_ÉTAT DESCRIPTION
Exemple : HTTP/1.1 200 OK ou HTTP/1.0 404 Not Found
Le premier chiffre du code d’état retourné par le serveur correspond à
une catégorie de réponse. On a les catégories suivantes :
1: réservé
2: action exécuté avec succès.
3: Accès impossible, redirection nécessaire.
4: Requête invalide.
5: Erreur du serveur
10 Rappel sur HTTP (Youssef Saadi / v1.1)
Quelques codes d’état retournés par le serveur
11 Rappel sur HTTP (Youssef Saadi / v1.1)
Fonctionnalités de HTTP
Codification du type
Un client peut indiquer au serveur le type de document qu’il accepte en
réponse.
Le type est défini avec la norme MIME (Multipurpose Internet Mail Extension).
Du coté du client on dispose du champs (optionnel) ACCEPT, pour spécifier le
type document attendu.
Plusieurs types peuvent être mentionnés sur la même ligne ACCEPT séparés
par des virgules.
Si le serveur ne trouve aucun document de type tel précisé dans ACCEPT,
alors il renvoi le code d’erreur 406.
12 Rappel sur HTTP (Youssef Saadi / v1.1)
Exemples de types de document
13 Rappel sur HTTP (Youssef Saadi / v1.1)
Codification du type
Du coté du serveur, un champ content-type est obligatoirement envoyé
en réponse au client.
Le navigateur se base sur ce champ pour décider du traitement en
adéquation sur le document renvoyé.
14 Rappel sur HTTP (Youssef Saadi / v1.1)
Fonctionnalités de HTTP
Sélection du jeu de caractères
Le champ Accpet-Charset dans une requête indique le jeu de caractères
préféré pour la réponse.
Si le serveur ne trouve pas un document avec le jeu de caractère spécifié
renvoie le code d’erreur 406.
Le jeu de caractère par défaut associé aux fichier texte est l’ISO-8859-1.
La spécification 1.1 indique qu’un client doit respecter une indication du jeu
de caractères quand elle apparaît dans le champ Content-Type retourné par
le serveur comme par exemple :
Content-Type : text/html; charset à iso-8859-1
15 Rappel sur HTTP (Youssef Saadi / v1.1)
Fonctionnalités de HTTP
Sélection de la langue
Le champ Accept-Language permet au client d’indiquer une préférence
quant à la langue du document demandé.
Le champ Content-Language, retourné par le serveur, signale au client quelle
est la langue du document qu’il fournit en réponse à sa requête.
Ces options n’ont d’intérêt que si le serveur dispose de plusieurs version dans
différentes langues du document demandé.
Apache permet de distinguer ces versions en prenant en compte l’extension
du fichier correspondant à la langue (utilisation de l’option Multiviews dans
le fichier de configuration d’Apache).
On peut donc rencontrer dans un même répertoire du serveur des fichiers du
genre : index.html.de index.html.fr ou index.de.htm index.fr.htm
16 Rappel sur HTTP (Youssef Saadi / v1.1)
Fonctionnalités de HTTP
Longueur du document envoyé
Le champ Content-Length indique la taille en octets du document présent
dans le corps du message.
Ce champ peut apparaître dans une requête (envoi de données d’un
formulaire) ou dans une réponse.
Dans une requête contenant un corps à l’attention du serveur, ce champ
est obligatoire.
Exemple : Content-Length : 361.
17 Rappel sur HTTP (Youssef Saadi / v1.1)
Fonctionnalités de HTTP
Demande d’une nouvelle version d’un document
Un client peut demander à recevoir un document en réponse à un GET
uniquement si ce document a été modifié depuis une certaine date.
Cette option a un intérêt quand le client gère un cache de pages Web
(comme le fait, par exemple un mandataire « proxy ».
Cette possibilité est obtenue en rajoutant le champ : IF-Modified-Since
dans la requête :
Exemple : If-Modified-Since : Sat, 29 Oct 1994 19:43:31 GMT
Si le serveur ne dispose pas d’une version du document plus récente que
la date et l’heure indiquées, il renvoie le code 304.
18 Rappel sur HTTP (Youssef Saadi / v1.1)
Fonctionnalités de HTTP
Identification des correspondances
Le client peut s’identifier auprès du serveur en employant le champ
User-Agent dans sa requête.
Ce champ permet au serveur d ’établir des statistiques sur les navigateurs
avec lesquels les internautes visitent ses sites.
Exemple : User-Agent: links(0,38;)
Le serveur peut aussi s’identifier auprès du client lors d’une réponse. Ceci
s’effectue à l’aide du champ Server.
Pour des raisons de sécurité ce champ n’est parfois pas retourné au client.
Exemple : Server : Apache/1.3.26 (Unix) Debian Gnu/Linux PHP
19 Rappel sur HTTP (Youssef Saadi / v1.1)
Fonctionnalités de HTTP
Date et délai d’expiration
Il est possible d’avoir une indication sur la date et l’heure où une
opération s’est effectuée (pour une requête ou une réponse).
C’est le rôle du champ Date:
Le champ Last-Modified renseigne le client sur la date et l’heure de la
dernière modification du document renvoyé :
20 Rappel sur HTTP (Youssef Saadi / v1.1)
Les cookies
Une cookie est une association d’un nom à une valeur que le navigateur
fournit automatiquement à un site après que celui-ci lui est demandé
d’enregistrer cette association.
C’est le serveur web qui décide de demander au client d’enregistrer
certaines informations qui lui permettront de reconnaitre l’internaute lors
d’une prochaine visite.
La gestion des cookies se fait par l’ajout de lignes dans l’en-tête HTTP.
21 Rappel sur HTTP (Youssef Saadi / v1.1)
Principe des cookies
GET /
Set-Cookie: VisitorID=11111; Path=/;
Table des cookies du navigateur
GET /book
VisitorID=11111; Path=/; Cookie: VisitorID=11111;
SID_book=88; Path=/book;
Navigateur Serveur
Web Set-Cookie: SID_book=88; Path=/book; Web
GET/book/order
Cookie: VisitorID=11111;
Cookie: SID_book=88;
22 Rappel sur HTTP (Youssef Saadi / v1.1)
Principe des cookies
GET /music
Cookie: VisitorID=11111;
Set-Cookie: SID_music=99; Path=/music;
Table des cookies du navigateur Navigateur Serveur
Web Web
VisitorID=11111; Path=/;
GET/music/buy
SID_book=88; Path=/book; Cookie: VisitorID=11111;
SID_music=99; Path=/music; Cookie: SID_music=99;
23 Rappel sur HTTP (Youssef Saadi / v1.1)
Remarques
Plusieurs directives Set-Cookie peuvent être retournée par un même serveur.
Un navigateur devrait satisfaire les exigences nécessaires en termes de gestion
de cookies:
Pouvoir mémoriser au minimum 300 cookies;
Avoir une taille minimale de 4Ko pour chaque cookie;
Conserver au minimum 20 cookies par serveur.
Un cookie peut être supprimer à partir de la machine du client selon la valeur
de l’attribut « Expires »:
Un cookie sans date d’expiration est retiré lorsque l’internaute quitte son
navigateur.
24 Rappel sur HTTP (Youssef Saadi / v1.1)
HTTP 2
HTTP/1 est actuellement en train d’être remplacé par une nouvelle
version plus modernisée, plus rapide et sécurisée : HTTP/2.
L’IETF, une communauté internationale de spécialistes du web a
commencé le développement de HTTP/2 en 2012. Après avoir été adopté
par la plupart des grands navigateurs (Chrome, Firefox, Safari, Opera) en
2015, ce nouveau protocole est devenu accessible pour le grand public.
Voyons donc quels sont ses avantages principaux !
Source :https://www.hosteur.com/ressources/articles/adopter-http-2
25 Rappel sur HTTP (Youssef Saadi / v1.1)
Avantages du HTTP 2: rapidité
Lorsqu’on utilise HTTP/1, les navigateurs effectuent une requête par
ressource. Ceci augmente considérablement le temps de chargement d’une
page. Quant à HTTP/2, il utilise ce qu’on appelle le multiplexage : le
navigateur télécharge avec une seule requête toutes les ressources
nécessaires à l’affichage de la page, comme montré sur le schéma ci-
dessous.
26 Rappel sur HTTP (Youssef Saadi / v1.1)
Avantages du HTTP 2: rapidité
27 Rappel sur HTTP (Youssef Saadi / v1.1)
Avantages du HTTP 2: sécurité
Le protocole HTTP/2 peut être utilisé avec ou sans chiffrement TLS.
Néanmoins, les navigateurs web les plus populaires (Firefox, Chrome, Safari,
etc.) ont décidé d’implémenter uniquement la version d’HTTP/2 avec
chiffrement. Les créateurs de sites sont donc obligés d’installer un certificat
SSL leur permettant de mieux sécuriser leurs données et celles de leurs
clients.
28 Rappel sur HTTP (Youssef Saadi / v1.1)