HTTP
          Analyser gratuitement les en-têtes HTTP de votre page : (?)

Articles

Les bases du protocole HTTP

Qu'est-ce que le protocole HTTP ?

L'HTTP (Hypertext Transfer Protocol) est le protocole de transport utilisé par les navigateurs Web (Firefox, Internet Explorer...) et les serveurs Web (Apache, IIS...) pour communiquer entre eux. C'est lui qui est utilisé par exemple pour obtenir un fichier HTML, une image, poster un formulaire Internet. Il est donc au coeur de l'Internet. Techniquement c'est un protocole texte (donc lisible en clair) s'appuyant les protocoles plus bas-niveau TCP et IP.

Avec HTTP la communication entre un navigateur et un serveur Web est finalement assez simple. En voici le déroulé :

  • une URL telle que http://www.monsite.com/fichier.html est donnée au navigateur par un internaute
  • le navigateur en extrait le nom de domaine 'www.monsite.com' et à partir de cette information sait comment trouver le serveur Web distant (grâce à une opération dite de DNS lookup qui résout un nom de domaine en une adresse IP)
  • à partir de là une connexion (basée sur les protocoles TCP/IP) est établie entre le navigateur et le serveur Web distant
  • une requête HTTP demandant la ressource '/fichier.html' est alors transmise par le navigateur
  • le serveur Web trouve la ressource correspondante et en renvoie le contenu dans une réponse HTTP
  • le navigateur est désormais capable d'afficher le fichier HTML à l'internaute

Dois je connaitre l'HTTP pour gérer/réaliser mon site Web ?

Bien sur il est possible de gérer et même de réaliser un site Web sans rien savoir du protocole HTTP. Et heureusement car sinon il y aurait peu de sites Web sur l'Internet !

Cependant ce protocole est tellement omniprésent sur l'Internet qu'une connaissance minimale de l'HTTP et du vocabulaire qui l'entoure est bien souvent très utile. Par exemple cela pourra vous permettre :

  • de savoir de quoi on parle quand vous entendez les mots GET ou POST
  • de savoir comment gérer au mieux une redirection d'Url
  • de savoir ce qui se cache derrière un message "404 File not found" affiché par un navigateur
  • et bien plus encore...

Structure d'une requête HTTP

Voici un exemple de requête envoyé par un navigateur tel que Safari:

GET /fichier.html HTTP/1.1
Host: www.monsite.com
User-Agent: Mozilla/5.0 Safari/531.9

La première ligne contient toujours: le type de requête, la partie chemin de l'URL de la ressource cible et enfin la version du protocole (1.0 ou 1.1 généralement). Les 2 types de requête les plus connus sont :

  • GET : c'est pour 'obtenir' une ressource. C'est bien entendu la requête la plus utilisée sur Internet.
  • POST : c'est pour envoyer le contenu d'un formulaire HTML (les informations sont passées dans

Les lignes suivantes sont des champs HTTP, toujours formatées de cette manière "NomChamps: Valeur". Tout ceci constitue l'en-tête de la requête. Dans certains cas (pour les POST), il peut aussi y avoir un corps (body) pour la requête.

Structure d'une réponse HTTP

Voici un exemple de réponse renvoyé par un serveur Web tel que Apache :

HTTP/1.1 200 OK
Date: Thu, 24 Sep 2009 19:37:34 GMT
Server: Apache/2.2.3
Content-Length: 7234
Content-Type: text/html; charset=UTF-8
[ici se trouve le corps (body) de la réponse]

La première ligne de la réponse contient toujours le 'code' HTTP indiquant si la requête a réussi ou pas. Puis, comme pour la réponse, on trouve les lignes des champs HTTP. Tout ceci constitue l'en-tête de la réponse. Ensuite se trouve le corps de la réponse, qui dans le cas d'un GET d'un fichier HTML contient par exemple le code HTML de la page visée.

A quoi correspondent les codes de réponse HTTP ?

Même en tant que simple internaute, on peut être confronté à des codes de réponse HTTP (par exemple quand on tape une URL incorrecte). Voici une description des principales valeurs à connaitre :

  • 200 "Ok": cela signifie que tout va bien et que le serveur Web renvoie le contenu d'une ressource dans le corps (body) de la réponse
  • 301 "Moved Permanently" : c'est une redirection permanente vers une URL indiquée dans la réponse (champs 'Location'). Cette redirection est considéree comme 'Google Friendly' et n'affecte pas votre référencement naturel (SEO)
  • 302 "Moved temporarily" : c'est une redirection temporaire vers une URL indiquée. C'est moins apprécié par Google
  • 404 "File not found" : cela signifie que le serveur Web n'a pas trouvé de ressource correspondant à l'URL indiquée
  • 401 "Unauthorized" : cela signifie que l'accès à l'URL est sécurisée. Le serveur Web vous demande ainsi de lui indiquer un login/mot de passe
  • 403 "Forbidden" : cela signifie qu'un login/mot de passe invalide a été donnée pour accéder à une URL sécurisée
  • 500 "Internal Error" : cela signifie que le serveur Web n'a pas été capable de traiter la requête HTTP. Cela peut indiquer un problème très sérieux.

Quels sont les champs HTTP les plus importants à connaitre ?

Il est utile de connaitre les champs HTTP les plus connus :

Pour les requêtes :

  • Host : c'est le nom du domaine visé. Un serveur Web peut gérer plusieurs domaines en même temps sur la même machine. On dit alors qu'il gère des 'virtual hosts'.
  • User-Agent : ce champs est utilisé par les navigateurs pour indiquer leur nom. Les crawlers des moteurs de recherches utilise aussi ce champs pour se faire reconnaitre (ex: Googlebot pour Google)
  • Referer : quand un utilisateur clique sur un lien externe à partir d'une page, le navigateur indique dans ce champs l'URL de la source. Cela peut être très utile pour analyser la source de notre trafic.

Pour les réponses :

  • Content-Type : le serveur Web indique le type ('MIME type') de la ressource qu'il renvoie (image, html, pdf...). Il peut même indiquer parfois l'encodage des caractères du contenu. Par exemple: text/html; charset=UTF-8
  • Server : le serveur Web indique sa signature dans ce champs.
  • Set-Cookie : le serveur Web (souvent guidé par les lignes de code du développeur d'un site Web) peut indiquer au navigateur des valeurs de cookies. Ces valeurs seront renvoyés par le navigateur dans les requêtes futures.
  • Location : c'est le champs utilisé lors des redirections pour indiquer la nouvelle URL cible

En savoir plus

Si cet article vous a donné envie de vous documenter davantage sur le protocole HTTP, voici quelques liens utiles :