Console : Du fun avec les en-têtes HTTP

Étude de quelques exemples concrets de manipulation des headers dans la console Check my Website.

J’avais commencé à « jouer » avec les contrôles avec arguments lors d’un précédent billet. Il est question aujourd’hui de triturer les headers, en-têtes HTTP en bon français pour pouvoir se sortir de situations de supervision délicates.

Le premier cas nous est arrivé via le support. Je vous le livre tel que.

Vérifier Outlook Web Access

La question reçue au support était celle-ci :

Bonjour, je cherche a monitorer notre webmail qui est en HTTPS et qui à un certif et j’ai donc une erreur 400, avez vous une solution ?

Nous avons été voir le webmail en question et nous sommes aperçus qu’il s’agissait d’un serveur webmail basé sur Outlook Web Access.

Ce type de webmail attend un user-agent dans la requête qui est lui est faite, sinon le contrôle est en erreur.

Je prends l’exemple habituel de monitoring-fr.org pour illustrer le cas support mais les réglages, le raisonnement s’applique bien sûr à un serveur Outlook Web Access.

Pour résoudre le problème, il faut se rendre dans le mode avancé des préférences pour le site et renseigner une clé et une valeur pour En-têtes.

Vous pouvez par exemple mettre User-Agent comme clé et Chrome/33.0.1750.146 comme valeur.

Réglages en mode avancé des headers
Réglages en mode avancé des headers

Voilà les entrées journal du serveur web de monitoring-fr.org qui est testé de cette façon. Les IPs sont remplacés par xxx.xxx.xxx.xxx. Nous voyons par contre clairement la requête demandée et le User-Agent que nous avons renseigné.

xxx.xxx.xxx.xxx - - [06/Jun/2014:10:36:50 +0200] "GET / HTTP/1.1" 301 5 "-" "Chrome/33.0.1750.146" "xxx.xxx.xxx.xxx"
xxx.xxx.xxx.xxx - - [06/Jun/2014:10:36:50 +0200] "GET / HTTP/1.1" 200 12861 "-" "Chrome/33.0.1750.146" "xxx.xxx.xxx.xxx"

Outlook Web Acces, c’est fait !

Vérifier un cluster web

Prenons maintenant un cas d’école pour tester un site particulier derrière des répartiteurs de charge.

Architecture
Architecture

Quand vous demandez votre site via son adresse http://www.mon-super-site-a-moi.com, la résolution DNS vous enverra vers l’IP du répartiteur de charge. Pareil pour le contrôle Check my Website.

Si vous souhaitez tester chacun des membres de votre cluster web, il faut utiliser le FQDN (ou IP) de chaque noeud. Bien évidement, il faut que les noeuds soient accessibles depuis « les internets » mondiaux.

Problème, comment demander à www1 de nous servir le site http://www.mon-super-site-a-moi.com ?

Utiliser les en-têtes bien sûr ! Étudions les en-têtes d’une requête vers mon-super-site-a-moi…

Host: www.mon-super-site-a-moi.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
If-Modified-Since: Fri, 06 Jun 2014 08:10:58 GMT
Cache-Control: max-age=0

Notons au passage le User-Agent… Magnifique, très complet ! Blague à part, il y a là une clé et une valeur qui nous intéresse particulièrement; c’est Host avec la valeur mon-super-site-a-moi.com.

Nous allons utiliser ce paramètre conjoitement avec le contrôle d’une chaîne de caractère dans la réponse pour être 100% sûr que :

  • Nous contrôlons bien un FQDN ou une IP d’un pool de répartition. http://www.mon-super-site-a-moi.com est servi par www1, www2 et www3 via wwww
  • Nous contrôlons bien le site http://www.mon-super-site-a-moi.com sur un serveur où est également hébergé http://www.ton-super-site-mais-a-moi-quand-meme.com.

D’abord, un premier réglage en mode avancé des préférences pour spécifier l’adresse du serveur, flouté dans la copie d’écran. Ce peut être www1 pour notre exemple.

Réglages paramètre Host des en-têtes
Réglages paramètre Host des en-têtes

La partie intéressante est bien sûr En-têtes où nous retrouvons Host comme clé et www.mon-super-site-a-moi.com comme valeur

Un deuxième réglage dans la partie Contrôles des préférences pour fixer la chaîne de caractères attendue dans la réponse. Celle-ci doit être unique au site à tester bien sûr. Dans l’exemple, c’est le mot location qui est recherché dans la réponse. Non, vous ne pouvez pas me demander pourquoi c’est location

Réglages en mode avancé des headers
Réglages en mode avancé des headers

Une conclusion, la vôtre ?

Comment un cas d’école relativement complexe à expliquer peut finalement se terminer par une solution plutôt simple pourrait être la conclusion.

Nous n’avons vu que deux cas mais il est possible de s’adapter à pas mal de situations grâce aux diverses manipulations sur les paramètres d’un contrôle et sur les en-têtes, corps de celui-ci.

Si vous avez un cas concret d’utilisation, surtout bien tordu, n’hésitez pas à nous le soumettre ! C’est ma façon de vous laisser conclure sur le sujet.

Olivier Jan

À propos de l’auteur

| Cofondateur de Check my Website

Check my Website est un service pour la supervision et la surveillance à distance de la disponibilité, de la performance et du bon fonctionnement des sites et applications web.

Suivez @olivjan sur Twitter !

Laissez un commentaire

comments powered by Disqus