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

  • 29
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mai 30, 2022
  • Catégorie Administration
  • Langue French
  • Taille du fichier 1.1498MB