Le protocole HTTP Didier DONSEZ Université Joseph Fourier (Grenoble 1) PolyTech
Le protocole HTTP Didier DONSEZ Université Joseph Fourier (Grenoble 1) PolyTech’Grenoble – LIG/ADELE Didier.Donsez@imag.fr Didier.Donsez@ieee.org http://membres-liglab.imag.fr/donsez/cours 13/03/2011 Didier Donsez, 1995-2011, HTTP 2 Au sommaire Historique Le protocole HTTP Les méthodes GET et POST Le suivi de session Clients et Serveurs HTTP Autour d ’HTTP > > > 13/03/2011 Didier Donsez, 1995-2011, HTTP 3 Le Protocole HTTP HTTP : HyperText Tranfert Protocol (RFC 1945 et 2068) protocole de rapatriement des documents protocole de soumission de formulaires Fonctionnement (très simple en HTTP/1.0) connexion demande (GET) d ’un document renvoi du document (status=200) ou d ’une erreur déconnexion Cependant dialogue plus complexe en cas d ’identification optimisation : une série de plusieurs requêtes sur une connexion Connexion « KeepAlive » de HTTP/1.1 (RFC 2068) 13/03/2011 Didier Donsez, 1995-2011, HTTP 4 Un protocole omniscient IT Servers Embedded Servers Web of Things 13/03/2011 Didier Donsez, 1995-2011, HTTP 5 Dialogue HTTP Protocole en mode de lignes de caractère le plus basic de butineur (User Agent) HTTP : telnet www.sun.com 80 Types de dialogue Récupération d ’un document méthode GET Soumission d ’un formulaire méthodes GET ou POST Envoi de Document et Gestion de Site méthodes PUT, DELETE, LINK, UNLINK Gestion de proxy/cache méthode HEAD (récupération des informations sur le document) 13/03/2011 Didier Donsez, 1995-2011, HTTP 6 Dialogue HTTP exemple de requête HTTP (méthode POST) HTTPD le Client envoie la Requête POST /script HTTP/1.0 méthode,chemin,version Accept: www/source documents acceptés Accept: text/html Accept: image/gif Accept: image/jpeg User-Agent: Lynx/2.2 libwww/2.14 * une ligne blanche * name1=value1& name2=value2 POST /script UA machX port 80 le Serveur retourne la Réponse HTTP/1.0 200 OK ligne de status Date: Wed, 02Feb97 23:04:12 GMT Server: NCSA/1.1 MIME-version: 1.0 Last-modified: Mon,15Nov96 23:33:16 GMT Content-type: text/html type du document retourné Content-length: 2345 sa taille * une ligne blanche * <HTML><HEAD><TITLE> ... doc.htm Entête de la réponse Corps de la réponse Entête de la requête Corps de la requête 13/03/2011 Didier Donsez, 1995-2011, HTTP 7 Format de la requête Envoyé par le client au serveur <Méthode> <URI> HTTP/<Version> [<Champ d ’entête>: <Valeur>] [<tab><Suite Valeur si >1024>] ligne blanche [corps de la requête pour la méthode POST] GET /docu2.html HTTP/1.0 Accept: www/source Accept: text/html Accept: image/gif User-Agent: Lynx/2.2 libwww/2.14 From: alice@pays.merveilles.net * une ligne blanche * POST /script HTTP/1.0 Accept: www/source Accept: text/html Accept: image/gif User-Agent: Lynx/2.2 libwww/2.14 From: alice@pays.merveilles.net Content-Length: 24 * une ligne blanche * name1=value1& name2=value2 13/03/2011 Didier Donsez, 1995-2011, HTTP 8 Méthodes de la requête (i) GET demande pour obtenir des informations et une zone de données concernant l ’URI HEAD demande pour seulement obtenir des informations concernant l ’URI POST envoie de données (contenu du formulaire vers le serveur, requête SOAP …) situées dans le corps. PUT enregistrement du corps de la requête à l ’URI indiqué DELETE suppression des données désignées par l ’URI 13/03/2011 Didier Donsez, 1995-2011, HTTP 9 Méthodes de la requête (ii) OPTIONS demande des options de communication disponibles TRACE retourne le corps de la requête intacte (déboguage) CONNECT + Nouvelles extensions de WebDAV PROPFIND, PROPPATCH, MKCOL,COPY, MOVE, LOCK, UNLOCK + Nouvelles extensions de HTTP/U et HTTP/MU NOTIFY, … (UPnP) > 13/03/2011 Didier Donsez, 1995-2011, HTTP 10 Format de la réponse Réponse envoyé par le serveur au client HTTP/<Version> <Status> <Commentaire Status> Content-Type: <Type MIME du contenu> [< Champ d ’entête >: <Valeur>] [<tab><Suite Valeur si >1024>] Ligne blanche Document HTTP/1.0 200 OK Date: Wed, 02Feb97 23:04:12 GMT Server: NCSA/1.1 MIME-version: 1.0 Last-modified: Mon,15Nov96 23:33:16 GMT Content-type: text/html Content-length: 2345 * une ligne blanche * <HTML><HEAD><TITLE> … </BODY></HTML> 13/03/2011 Didier Donsez, 1995-2011, HTTP 11 Status des réponses HTTP (RFC2068) Code de réponse donné par le serveur au client 100-199 Informationnel 100 : Continue (le client peut envoyer la suite de la requête), ... 200-299 Succès de la requête client 200: OK, 201: Created, 204 : No Content, ... 300-399 Redirection de la Requête client 301: Redirection, 302: Found, 304: Not Modified, 305 : Use Proxy, ... 400-499 Requête client incomplète 400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found 500-599 Erreur Serveur 500: Server Error, 501: Not Implemented, 502: Bad Gateway, 503: Out Of Resources (Service Unavailable) 13/03/2011 Didier Donsez, 1995-2011, HTTP 12 Entêtes HTTP 4 types de champs d ’entête Général commun au serveur, au client ou à HTTP Requête du client formats de documents et paramètres pour le serveur Réponse du serveur information concernant le serveur Entité informations concernant les données échangés 13/03/2011 Didier Donsez, 1995-2011, HTTP 13 Entêtes Généraux HTTP Cache-Control = contrôle du caching. Connection = listes d ’option close pour terminer une connexion. Date = date actuelle (format RFC1123 mais aussi RFC850). MIME-Version = version MIME utilisé. Pragma = instruction pour le proxy. Transfer-Encoding = type de la transformation appliquée au corps du message. Upgrade = indique le protocole souhaité. Via = utilisé par les proxys pour indiquer les machines et protocoles intermédiaires. 13/03/2011 Didier Donsez, 1995-2011, HTTP 14 Entêtes de requêtes client HTTP Accept = type MIME visualisable par l ’agent Accept-Language : liste de langues (fr, en, … ) Authorization = type d ’autorisation BASIC nom:mot de passe (en base64) donc transmis en clair !!! NB : Préalablement le serveur a répondu un WWW-Authenticate Cookie = cookie rétourné Host = spécifie la machine et le port du serveur un serveur peut héberger plusieurs serveurs Referer = URL d ’origine page à contenant l ’ancre à partir de laquelle le visualisateur a trouvé l ’URL. User-Agent = modèle du visualisateur 13/03/2011 Didier Donsez, 1995-2011, HTTP 15 Entêtes de requêtes client HTTP From = adresse email de l ’utilisateur rarement envoyé pour conserver l anonymat de l ’utilisateur If-Modified-Since = condition de retrait la page n ’est transférée que si elle a été modifiée depuis la date précisée. Utilisé par les caches indique si le document demandé peut être caché ou pas. If-Unmodified-Since = condition de retrait If-Match = condition de retrait If-None-Match = condition de retrait If-Range = condition de retrait 13/03/2011 Didier Donsez, 1995-2011, HTTP 16 Entêtes de requêtes client HTTP Max-Forwards = nombre max de proxy Proxy-Authorization = identification Range = zone du document à renvoyer bytes=x-y (x=0 correspond au premier octet, y peut être omis pour spécifier jusqu ’à la fin) 13/03/2011 Didier Donsez, 1995-2011, HTTP 17 Entêtes des réponses serveur HTTP Accept-Range = accepte ou refus d ’une requête par intervalle Age = ancienneté du document en secondes Proxy-Authenticate = système d ’authentification du proxy Public = liste de méthodes non standards gérées par le serveur Retry-After = date ou nombre de secondes pour un ressai en cas de code 503 (service unavailable) Server = modèle de HTTPD utilisé par Satan !!!! Set-Cookie = créer ou modifie un cookie sur le client Vary = l ’entité possède plusieurs sources Warning = informations supplémentaire du code d ’état 14 Transformation applied : le proxy a changé de Content-Type ou le Content-Encoding WWW-Authenticate = système d ’authentification pour l ’URI 13/03/2011 Didier Donsez, 1995-2011, HTTP 18 Entêtes d ’entité HTTP Allow = méthodes autorisées pour l ’URI Content-Base = URI de base pour la résolution des URL Last-Modified = date de dernière modification du doc. Utilisé par les caches Content-Length = taille du document en octet utilisé par le client pour gauger la progression des chargements Content-Encoding = type encodage du document renvoyé compress, x-gzip, x-zip Content-Language : le langage du document retourné fr, en ... Content-Location : URI de l ’entité quand l ’URI est à plusieurs endroits 13/03/2011 Didier Donsez, 1995-2011, HTTP 19 Entêtes d ’entité HTTP Content-MD5 : résumé MD5 de l ’entité Content-Range : position du corps partiel dans l ’entité bytes x-y/taille Content-Transfert-Encoding : transformation appliqué du corps de l ’entité 7bit, binary, base64, quoted-printable Content-Type = type MIME du document renvoyé utilisé par le client pour sélectionner le visualisateur (plugin) RFC2045 ETag : transformation appliqué du corps de l ’entité 7bit, binary, base64, quoted-printable Expires : date de péremption de l ’entité Refresh : 10 Refresh: 10; Location=/newloc.htm 13/03/2011 Didier Donsez, 1995-2011, HTTP 20 Internationalisation Language Accept fr, de, it, en, sq (albanais), ru, (russe), ja (japonais), zh (chinois), el (grec), he (hébreu), ca (catalan) ... Charset (table de caractère) par défaut ISO-8859-1 (Latin-1) uploads/s1/ http-khalid-katkout.pdf
Documents similaires




