Voir rapidement les headers dâune reponse HTTP dâun serveur web peut sâavĂ©rer trĂšs pratique, pour cela, une rĂ©ponse rapide : telnet.
Le protocole HTTP répond à la RFC 2616 du W3C.
Telnet
Pour se connecter Ă un serveur, faire la ligne de commande suivante :
> telnet serveur num_port
par exemple :
%> telnet www.voila.fr 80
Une fois connecté, on va demander un document. On va utiliser la méthode GET. Par exemple sur la racine du site (ie / ) :
GET / HTTP/1.0 <CRLF><CRLF>
Il est important de prĂ©ciser le protocole que lâon va utiliser aprĂšs le document demandĂ© (ici on demande du HTTP/1.0, ca aurait pu ĂȘtre du HTTP/1.1).
Il est primordial de placer 2 <CRLF> (ie des retours Ă la ligne) aprĂšs la commande GET, pour signaler au serveur que la commande est complĂšte.
On peut construire des requĂȘtes plus compliquĂ©es, en enchainant les Headers, par exemple :
GET / index.html HTTP/1.0 <CRLF>Accept : text/html, image/gif <CRLF> User-Agent : Mozilla/4.0 (compatible ; MSIE 4.0 ; Linux X11 2.2.17) <CRLF><CRLF>
Autorisation
Les mĂ©thodes dâautorisation pour accĂ©der Ă certaines zone dâun serveur HTTP rĂ©pondent Ă la RFC 2617 du W3C.
Lorsquâune zone du serveur est protĂ©gĂ©e par cette mĂ©thode, la demande dâun document de cette zone renvoie une rĂ©ponse comme suit :
HTTP/1.0 401 Authorization RequiredDate: Wed, 23 Jan 2002 15:12:30 GMT Server: Apache/1.3.20 (Unix) (Red-Hat/Linux) ApacheJServ/1.1.1 mod_ssl/2.8.4 OpenSSL/0.9.6 WWW-Authenticate: BASIC realm="RealmName" Content-Type: text/html X-MTracker-Version: v4.0 build 49.5 Expires: Thu, 01 Jan 1970 00:00:00 GMT Last-Modified: Wed, 23 Jan 2002 15:12:30 GMT Cache-Control: no-cache must-revalidate Pragma: no-cache
Le Header important est WWW-Authenticate. Si lâutilisateur nâest pas dĂ©jĂ authentifiĂ© pour le Realm “RealmName“, une fenĂȘtre pop-up apparaitra et demandera le login/password de lâutilisateur.
Autorisation et Telnet
Pour sâauthentifier en utilisant Telnet sur un serveur HTTP avec lâautorisation âBasicâ, il faut ajouter un Header “Authorization”, suivi dâune chaine encodĂ©e BASE64 composĂ©e du login et du password. La structure de cette chaine est :
login:password
Si lâon veut sâidentifier comme lâutilisateur marc qui a le password antoine, on obtient lâencodage BASE64 suivant : bWFyYzphbnRvaW5l [1].
La requĂȘte Ă construire pourra donc ĂȘtre :
GET /servlet/protected/content/ HTTP/1.0 <CRLF> Authorization: Basic bWFyYzphbnRvaW5l <CRLF><CRLF>
Note : Attention Ă Ă©crire Basic et non BASIC !
[1] obtenu grĂące Ă la commande perl suivante : %> perl -MMIME::Base64 -e ‘print encode_base64(“marc:antoine”)’