Le protocole http et l’analyse des en-têtes http
Qu’appelle-ton un protocole http ?
Les navigateurs Web tel que Firefox, Chrome ainsi que les serveurs Apache utilisent ce protocole afin de communiquer entre eux. Il permet par exemple l’obtention d’un fichier HTML, d’une image tout comme l’utilisation d’un formulaire de contact.
Il est à noter que les robots d’indexation utilisent le même protocole afin de communiquer avec les serveurs.
La navigation entre les deux instances (navigateurs et serveurs) est relativement facile à comprendre. Voici comment fonctionne la communication :
- Un internaute communique dans un premier temps une URL au navigateur Web
- Dans un second temps, le navigateur va en extraire le nom de domaine, ce qui va lui permettre de trouver le serveur distant sur lequel se trouve le site internet.
- Une connexion est dès lors établie entre le navigateur et le serveur basée sur les protocoles TCP/IP.
- Le navigateur transmet une requête http au serveur afin de demander la ressource.
- Le serveur renvoi le contenu dans une réponse http au navigateur Web.
- Le navigateur affiche la page à l’internaute.
Qu’est-ce qu’une en-tête http d’une requête ?
Un navigateur tel que Safari envoi une requête ressemblant à ceci :
GET /mapage.html http/1.1[CRLF]
Host: www.mondomaine.com [CRLF]
User-Agent: Mozilla/5.0 Safari/531.9[CRLF]
[CRLF]
L’entête se décompose comme suit:
Sur la première ligne, il y a toujours le type de requête, la partie représentant le chemin de l’URL ainsi que la version du protocole. Il existe deux types de requêtes qui sont les suivantes :
- GET : Cette requête permet d’obtenir la ressource demandée.
- POST : Envoi le contenu d’un formulaire HTML
[CRLF] il s’agit de séquence ASCII permettant de séparer les différentes lignes de l’en-tête.
Les lignes suivantes sont des champs http.
Qu’est-ce qu’une en-tête http d’une réponse ?
Un serveur Web tel que Apache renvoie une en-tête de réponse ressemblant à ceci :
HTTP/1.1 200 OK[CRLF]
Date : Tur, 26 Jul 2015 14:32:12 GMT[CRLF]
Server: Apache/2.2.3[CRLF]
Content-Length: 7234 [CRLF]
Content-Type: text/html; charset=UTF-8[CRLF]
[CRLF]
[Veuillez trouver la réponse ici]
La première ligne de cette en-tête de réponse contient toujours le code http. Ce code permet d’indiquer si la requête a réussi ou échoué. Tout comme pour l’en-tête de requête, les autres lignes représentent les champs http.
Récapitulatif des codes http
Vous avez certainement déjà été confronté à certains codes d’erreurs en vous rendant sur votre site Web tel que l’erreur 404 indiquant que la page n’existe pas. Voici les principaux codes d’erreurs :
- 200 : Le serveur Web a trouvé la ressource et renvoi le contenu.
- 301 : Il s’agit d’une redirection permanente d’une URL vers une autre. Cette redirection n’aura aucune incidence sur le référencement de votre site Web
- 302 : Il s’agit d’une redirection temporaire vers une autre URL
- 400 : Le format défini par le protocole http n’est pas respecté lors de l’envoi de la requête
- 401 : La source demandée semble sécurisée. Le serveur Web vous demande un identifiant et un mot de passe afin de pouvoir poursuivre.
- 403 : L’identifiant et le mot de passe communiqué par vos soins semblent invalides, ce qui ne permet pas d’accéder à la source demandée.
- 404 : La ressource demandée n’a pas été troué sur le serveur.
- 500 : La requête http n’a malheureusement pas pu être traitée par le serveur. Cette erreur est souvent la cause d’un problème interne au site Web.
Principaux champs http
Il peut être bien de prendre connaissance des différents champs http existant actuellement :
Concernant les requêtes :
- Host : IL s’agit du nom de domaine demandé. Un serveur peut disposer de plusieurs noms de domaine. Ces derniers sont gérer dans ce que l’on appelle des virtual-host.
- User-Agent : Les navigateurs utilisent ce champ comme une carte d’identité. Cela leurs permet de se faire connaitre par le serveur.
- Referer : Permet d’indiquer la source lorsque l’on arrive sur une page Web par le biais d’un autre site internet. Ce champ est très pratique si vous désirez pouvoir analyser la source de votre trafic Web.
Concernant les réponses :
- Content-Type : Ce champ permet d’indiquer le type de ressource renvoyé (HTML, PDF ou autre).
- Server : Il s’agit de la signature du serveur Web
- Set-Cookie : Permet d’indiquer au navigateur des valeurs de cookies
- Location : Ce champ est utilisé lors de redirection Web. Il permet d’indiquer le nouvel emplacement de la page.
Faut-il connaitre le protocole http afin de créer un site Web et l’optimiser ?
Sans connaissance de ce protocole, il est tout à fait possible de créer un site internet. Cependant, il peut être très utile d’avoir un minimum de connaissance de ce vocabulaire qui reste très présent actuellement sur le Web. De plus, dans certains cas, cela peut s’avérer très utile et vous permettra de savoir ce qui se cache derrière certains messages tel que « 404 File Not Found ». En dernier lieu, cela vous aidera à gérer au mieux vos redirections Web.