{"id":26,"date":"2008-02-20T23:28:59","date_gmt":"2008-02-20T22:28:59","guid":{"rendered":"https:\/\/arliguy.net\/2008\/02\/20\/http-et-telnet-pour-tester-rapidement-un-serveur-http\/"},"modified":"2008-02-20T23:28:59","modified_gmt":"2008-02-20T22:28:59","slug":"http-et-telnet-pour-tester-rapidement-un-serveur-http","status":"publish","type":"post","link":"https:\/\/arliguy.net\/2008\/02\/20\/http-et-telnet-pour-tester-rapidement-un-serveur-http\/","title":{"rendered":"HTTP et Telnet : pour tester rapidement un serveur HTTP"},"content":{"rendered":"

Voir rapidement les headers d\u2019une reponse HTTP d\u2019un serveur web peut s\u2019av\u00e9rer tr\u00e8s pratique, pour cela, une r\u00e9ponse rapide : telnet.<\/p>\n

Le protocole HTTP r\u00e9pond \u00e0 la RFC 2616<\/a> du W3C.<\/a><\/p>\n

Telnet<\/h2>\n

Pour se connecter \u00e0 un serveur, faire la ligne de commande suivante :<\/p>\n

> telnet serveur num_port<\/pre>\n

par exemple :<\/p>\n

%> telnet www.voila.fr 80<\/pre>\n

Une fois connect\u00e9, on va demander un document. On va utiliser la m\u00e9thode GET. Par exemple sur la racine du site (ie \/ ) :<\/p>\n

GET \/ HTTP\/1.0 <CRLF><CRLF><\/pre>\n

Il est important<\/strong> de pr\u00e9ciser le protocole que l\u2019on va utiliser apr\u00e8s le document demand\u00e9 (ici on demande du HTTP\/1.0, ca aurait pu \u00eatre du HTTP\/1.1).<\/p>\n

Il est primordial<\/strong> de placer 2 <CRLF> (ie des retours \u00e0 la ligne) apr\u00e8s la commande GET, pour signaler au serveur que la commande est compl\u00e8te.<\/p>\n

On peut construire des requ\u00eates plus compliqu\u00e9es, en enchainant les Headers, par exemple :<\/p>\n

GET \/ index.html HTTP\/1.0 <CRLF>Accept : text\/html, image\/gif <CRLF>\r\n\r\nUser-Agent : Mozilla\/4.0 (compatible ; MSIE 4.0 ; Linux X11 2.2.17) <CRLF><CRLF><\/pre>\n

Autorisation<\/h2>\n

Les m\u00e9thodes d\u2019autorisation pour acc\u00e9der \u00e0 certaines zone d\u2019un serveur HTTP r\u00e9pondent \u00e0 la RFC 2617<\/a> du W3C.<\/a><\/p>\n

Lorsqu\u2019une zone du serveur est prot\u00e9g\u00e9e par cette m\u00e9thode, la demande d\u2019un document de cette zone renvoie une r\u00e9ponse comme suit :<\/p>\n

HTTP\/1.0 401 Authorization RequiredDate: Wed, 23 Jan 2002 15:12:30 GMT\r\n\r\nServer: Apache\/1.3.20 (Unix)  (Red-Hat\/Linux) ApacheJServ\/1.1.1 mod_ssl\/2.8.4 OpenSSL\/0.9.6\r\n\r\nWWW-Authenticate: BASIC realm=\"RealmName\"\r\n\r\nContent-Type: text\/html\r\n\r\nX-MTracker-Version: v4.0 build 49.5\r\n\r\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\r\n\r\nLast-Modified: Wed, 23 Jan 2002 15:12:30 GMT\r\n\r\nCache-Control: no-cache must-revalidate\r\n\r\nPragma: no-cache<\/pre>\n

Le Header<\/em> important est WWW-Authenticate<\/strong>. Si l\u2019utilisateur n\u2019est pas d\u00e9j\u00e0 authentifi\u00e9 pour le Realm<\/em> “RealmName<\/strong>“, une fen\u00eatre pop-up apparaitra et demandera le login\/password de l\u2019utilisateur.<\/p>\n

Autorisation et Telnet<\/h2>\n

Pour s\u2019authentifier en utilisant Telnet sur un serveur HTTP avec l\u2019autorisation \u2019Basic\u2019, il faut ajouter un Header<\/em> “Authorization”<\/strong>, suivi d\u2019une chaine encod\u00e9e BASE64 compos\u00e9e du login et du password. La structure de cette chaine est :<\/p>\n

login:password<\/pre>\n

Si l\u2019on veut s\u2019identifier comme l\u2019utilisateur marc<\/em> qui a le password antoine<\/em>, on obtient l\u2019encodage BASE64 suivant : bWFyYzphbnRvaW5l [1].<\/p>\n

La requ\u00eate \u00e0 construire pourra donc \u00eatre :<\/p>\n

GET \/servlet\/protected\/content\/ HTTP\/1.0 <CRLF>\r\n\r\nAuthorization: Basic bWFyYzphbnRvaW5l <CRLF><CRLF><\/pre>\n

Note :<\/u> Attention \u00e0 \u00e9crire Basic et non BASIC !<\/p>\n

[1] obtenu gr\u00e2ce \u00e0 la commande perl suivante : %> perl -MMIME::Base64 -e ‘print encode_base64(“marc:antoine”)’<\/p>\n","protected":false},"excerpt":{"rendered":"

Voir rapidement les headers d\u2019une reponse HTTP d\u2019un serveur web peut s\u2019av\u00e9rer tr\u00e8s pratique, pour cela, une r\u00e9ponse rapide : telnet. Le protocole HTTP r\u00e9pond \u00e0 la RFC 2616 du W3C. Telnet Pour se connecter \u00e0 un serveur, faire la ligne de commande suivante : > telnet serveur num_port par exemple : %> telnet www.voila.fr … Continuer la lecture de HTTP et Telnet : pour tester rapidement un serveur HTTP<\/span> →<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[27],"tags":[28,29,30],"_links":{"self":[{"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/posts\/26"}],"collection":[{"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":0,"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/posts\/26\/revisions"}],"wp:attachment":[{"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/media?parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/categories?post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arliguy.net\/wp-json\/wp\/v2\/tags?post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}