Licence 3 Informatique
1/70
Univ Bx 1 (LaBRI)
L3 INFO
1 / 70
Cours 3
Le protocole de navigation hypertexte : HTTP
1 2
Principes Le protocole HTTP Syntaxe Echange de donnes Les cookies Le suivi de session Les extensions dHTTP
Bibliographie : M. Baron, Java pour le dveloppement dapplications Web : J2EE, http ://baron.mick.free.fr/ D. Donsez, http ://www-adele.imag.fr/ donsez/cours/ A. Tanenbaum, "Rseaux"
2/70
Univ Bx 1 (LaBRI)
L3 INFO
2 / 70
Plan
Principes Le protocole HTTP Syntaxe Echange de donnes Les cookies Le suivi de session Les extensions dHTTP
3/70
Univ Bx 1 (LaBRI)
L3 INFO
3 / 70
URL
Uniform Resource Locator
Une URL sert dsigner de manire universelle une page. Elle est forme de trois partie : le protocole de transport ; le nom DNS de la machine hbergeant la page ; la page et sa localisation (chemin relatif) sur le serveur. Exemple :
https ://miage.emi.u-bordeaux1.fr/espaceEtudiants/index.php
protocole https : protocole http scuris ; serveur miage.emi.u-bordeaux1.fr ; page index.php situe dans le rpertoire espaceEtudiants.
4/70
Univ Bx 1 (LaBRI)
L3 INFO
4 / 70
URL
Principaux protocoles
HTTP : utilis pour la navigation web ; HTTPS : version scurise ; FTP : File Transfer Protocol - transfert de chiers ; le : chier local ; news : newsgroups ; mailto : envoi de courrier lectronique ; webdav : accs en lecture/criture sur un espace dun serveur web ; ...
5/70
Univ Bx 1 (LaBRI)
L3 INFO
5 / 70
le navigateur interroge un serveur DNS pour connaitre ladresse IP du serveur www.u-bordeaux1.fr ; le serveur DNS rpond x.x.x.x ; le navigateur initie une connexion TCP sur le port HTTP (80) de la machine x.x.x.x ; il envoie sur la connexion une requte via le protocole HTTP demandant le chier par dfaut : index.html ; le serveur www.u-bordeaux1.fr retourne le chier demand via le protocole HTTP (ex. /var/www/html/index.html) ; la connexion TCP est coupe ; le navigateur afche tout le texte contenu dans la page ; le navigateur rcupre et afche toutes les images.
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
6/70
2 3
6 7 8
6 / 70
Plan
Principes Le protocole HTTP Syntaxe Echange de donnes Les cookies Le suivi de session Les extensions dHTTP
7/70
Univ Bx 1 (LaBRI)
L3 INFO
7 / 70
HTTP
HyperText Transfer Protocol
HTTP a t conu pour tre employ sur le Web, mais de faon sufsamment gnrique pour tre employ dans un cadre moins restrictif. Lutilisation de TCP comme protocole de transport sous-jacent garantit la abilit de la connexion (rmission des trames perdues, limination des doublons, gestion des acquittements etc ...) avec HTTP 1.0, une seule requte/rception par connexion ; avec HTTP 1.1, gestion des connexions persistantes : plusieurs enchanements requte/rponse possibles, ainsi que envois de requtes en rafale, sans attendre les rponses.
8/70
Univ Bx 1 (LaBRI)
L3 INFO
8 / 70
c D. Donsez
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
9/70
9 / 70
Dialogue HTTP
Univ Bx 1 (LaBRI)
L3 INFO
10 / 70
c D. Donsez
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
11/70
11 / 70
c D. Donsez
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
12/70
12 / 70
c D. Donsez
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
13/70
13 / 70
HTTP tant un protocole texte en ASCII, on peut communiquer de manire "brute", via le programme telnet :
telnet miage.u-bordeaux.fr 80 > log GET /index.htm HTTP/1.1 Host: miage.u-bordeaux.fr close
on initie une connexion TCP sur le port 80 de miage.u-bordeaux.fr ; demande le chier index.html avec la version 1.1 de HTTP ; Host spcie lhte de destination (si plusieurs par adresse IP) ; ligne vide permet dinformer le serveur de la n des enttes ; close permet de mettre n la connexion.
14/70
Univ Bx 1 (LaBRI)
L3 INFO
14 / 70
Entte
Trying 147.210.36.199... Connected to w3bdx1.drimm.u-bordeaux1.fr. Escape character is ^]. GET /index.htm HTTP/1.1 Host: miage.u-bordeaux.fr HTTP/1.1 200 OK Date: Tue, 25 Oct 2005 19:57:48 GMT Server: Apache/1.3.26 (Unix) Debian GNU/Linux mod_fastcgi/2.2.10 PHP /4.1.2 mod_ssl/2.8.9 OpenSSL/0.9.6c mod_perl/1.26 DAV/1.0.3 Last-Modified: Thu, 15 Jul 2004 13:00:58 GMT ETag: "9b003b-263-40f6800a" Accept-Ranges: bytes Content-Length: 611 Content-Type: text/html
15/70
Univ Bx 1 (LaBRI)
L3 INFO
15 / 70
16/70
16 / 70
MonServeurWeb
Ecrire une classe MonServeurWeb qui retourne systmatiquement une mme page HTML xe.
17/70
Univ Bx 1 (LaBRI)
L3 INFO
17 / 70
Solution
18/70
Univ Bx 1 (LaBRI)
L3 INFO
18 / 70
HTTP
Enttes de messages (1)
Paramtres dune requte User-Agent, informations sur le navigateur et sa plateforme ; Accept, le type de pages que le client peut traiter ; Accept-Charset, les jeux de caracttes accepts par le client ; Accept-Encoding, les codage de page accepts par le client ; Host, le nom DNS du serveur ; Authorization, informations sur lidentit du client ; Cookie, retourne un cookie pralablement plac par le serveur. Exercice Ecrire une fonction qui afche le contenu des diffrents paramtres de la requte.
19/70
Univ Bx 1 (LaBRI)
L3 INFO
19 / 70
HTTP
Enttes de messages (2)
Paramtres requte & rponse Date, horodatage du message ; Upgrade, le protocole sur lequel lmetteur veut basculer ; Paramtres dune rponse Content-Encoding, mthode de codage du contenu ; Content-Length, la longueur de la page en octets ; Last-Modied, heure et date dernire modication de la page ; Location, demande au client denvoyer sa requte ailleurs ; Set-Cookie, demande au client denregistrer un cookie. Exercice Ecrire des fonctions retournant des paramtres de rponse adapts.
20/70
Univ Bx 1 (LaBRI)
L3 INFO
20 / 70
HTTP
Groupes de codes de rponse
Chaque requte est suivie dune rponse, contenant un code dtat 3 chiffres : 1xx : Information ; 2xx : Succs - exemple : 200 = la requte a russi ; 3xx : Redirection - exemples : 301 = page dplace, 304 = page en cache toujours valide ; 4xx : Erreur client - exemples : 403 = page interdite, 404 = page inexistante ; 5xx : Erreur serveur - exemples : 500 = erreur interne, 503 = recommencer plus tard.
Exercice En utilisation le paramtre Location, modier notre serveur web pour quil redirige systmatiquement vers la page daccueil du LaBRI.
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
21/70
21 / 70
c D. Donsez
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
22/70
22 / 70
23/70
Univ Bx 1 (LaBRI)
L3 INFO
23 / 70
24/70
Univ Bx 1 (LaBRI)
L3 INFO
24 / 70
25/70
Univ Bx 1 (LaBRI)
L3 INFO
25 / 70
c D. Donsez
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
26/70
26 / 70
27/70
Univ Bx 1 (LaBRI)
L3 INFO
27 / 70
Vrication : trame
28/70
Univ Bx 1 (LaBRI)
L3 INFO
28 / 70
29/70
Univ Bx 1 (LaBRI)
L3 INFO
29 / 70
Exercice
Modier notre serveur web pour quil puisse rcuprer les valeurs passes par le client avec la mthode GET.
Exercice
Modier notre serveur web pour quil puisse rcuprer les valeurs passes par le client avec la mthode POST.
30/70
Univ Bx 1 (LaBRI)
L3 INFO
30 / 70
Cookie (1)
c D. Donsez
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
31/70
31 / 70
Cookie (2)
c D. Donsez
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
32/70
32 / 70
Motivation : la notion de session est importante dans de nombreuses applications (ex. commerce lectronique - gestion dun panier ) Cependant avec HTTP, le serveur ne maintient pas d informations lies aux requtes prcdentes d un mme client : les enchainements Requte/Rponse sont indpendants les uns des autres. Comment implanter la notion de session sur plusieurs requtes HTTP ?
33/70
Univ Bx 1 (LaBRI)
L3 INFO
33 / 70
Principales mthodes
Mthodes le serveur gnre un identicateur de session et associe un tat (et une date limite de validit) une session ; le client renvoie l identicateur de session chaque requte HTTP vers le serveur ; Echange et Stockage de lidenticateur de session input HIDDEN dans les formulaires ; rcriture des URLs ; cookies (dsactivable) ; identicateur de session SSL (Secure Socket Layer) ;
34/70
Univ Bx 1 (LaBRI)
L3 INFO
34 / 70
Session
Rcriture des URLs
L identiant de session est encod dans les URLs des documents HTML retourns par le serveur : Exemple :
http ://www.bob.fr/servlet/cart ?PROD_ID=383
devient
http ://www.bob.fr/servlet/cart ;jsessionid=To1128mC33718557521577075At ?PROD_ID=383
35/70
Univ Bx 1 (LaBRI)
L3 INFO
35 / 70
Session
Cookies
Chane dcrivant ltat dune session : NAME=. ; expires=. ; path=. ; domain=. ; stocke sur le client. Communique dans les enttes de requtes (Cookie :) et dans les enttes des rponses HTTP (Set- Cookie :) Limites : 300 cookies simultanes par client, 20 cookies par serveur ou domaine, 4Ko par cookie. Un client peut refuser des cookies.
36/70
Univ Bx 1 (LaBRI)
L3 INFO
36 / 70
Le serveur Apache
Statistiques
37/70
Installation (LaBRI) linux Ubuntu :- Utilisation des Rseaux sous Univ Bx 1 INF157
L3 INFO
37 / 70
Plan
Principes Le protocole HTTP Syntaxe Echange de donnes Les cookies Le suivi de session Les extensions dHTTP
38/70
Univ Bx 1 (LaBRI)
L3 INFO
38 / 70
webdav
Web Distributed Authoring and Versioning Protocol
Extension de HTTP pour la mise jour de site : ajout de nouvelles commandes HTTP :
PROPFIND : retourne les proprits ; PROPPATCH : modie les proprits ; MKCOL : cre une nouvelle collection ; COPY & MOVE : copie ou dplace une ressource au sein dun espace de nommage ; LOCK & UNLOCK : verrouille et dverouille un
serveurs WebDAV : MS IIS5, mod_dav pour Apache, support dans Tomcat 4... clients WebDAV : MS Ofce, Cadaver, konqueror...
39/70
Univ Bx 1 (LaBRI)
L3 INFO
39 / 70
Webdav
webdavs ://miage.emi.u-bordeaux1.fr/prod/webdav/test/2006/M2MIAGE/
40/70
Univ Bx 1 (LaBRI)
L3 INFO
40 / 70
HTTPS
S comme Secure
HTTP over SSL : URL : https ://host/document (Port TCP par dfaut : 443) HTTPS en java :
JSSE (javax.net.ssl.*) inclus dans Java 1.4 ; classe javax.net.HttpsURLConnection ;
Univ Bx 1 (LaBRI)
L3 INFO
41 / 70
HTTPR
R pour Reliable (Fiable)
propos par IBM au W3C (en cours dinstruction) ; HTTP est une couche de transport pour les messages SOAP dans la mise en oeuvre les Web Services (B2B, EAI) ; motivations : abiliser lchange de messages : changer une et une seul fois mme en cas dinterruption ; regrouper plusieurs messages par commande. mcanismes : journaliser les messages (requtes et rponses) ct client et ct serveur ; notion de transaction ; Valider/Acquiter les changes ; ajout de nouvelles commandes.
42/70
Univ Bx 1 (LaBRI)
L3 INFO
42 / 70
HTTPR
Nouvelles commandes
Ces commandes sont portes par la commande HTTP POST : PUSH Le client envoie des messages journaliss par le serveur ; La squence de messages est associe un identiant de transaction ; Peut contenir des acquittements des commandes prcdentes. PULL Demande recevoir des messages en attente cot serveur ; Peut contenir des acquittements. EXCHANGE : combine PUSH et PULL ; RESOLVE : dterminer les messages journaliss par le serveur ; REPORT : rapporter au serveur journaliss par le client.
43/70
Univ Bx 1 (LaBRI)
L3 INFO
43 / 70
Cours 3
Servlets
Cette partie est base fortement sur les transparents de cours de Mickal Baron :
Bibliographie : M. Baron, Java pour le dveloppement dapplications Web : J2EE (2006), http ://baron.mick.free.fr/
44/70
Univ Bx 1 (LaBRI)
L3 INFO
44 / 70
Plan
Fondamentaux
Un conteneur : Tomcat
Servlets
45/70
Univ Bx 1 (LaBRI)
L3 INFO
45 / 70
Servlet
Denition
Servlet Composant logiciel crit en Java fonctionnant ct serveur. Concurrents directs : scripts CGI (Common Gateway Interface) ; langages de script PHP, ASP etc ... Une Servlet sexcute dans un conteneur de Servlets.
46/70
Univ Bx 1 (LaBRI)
L3 INFO
46 / 70
Architecture
c M. Baron (2006)
47/70
Univ Bx 1 (LaBRI)
L3 INFO
47 / 70
Atouts
Portabilit :
Technologie indpendante de la plate-forme et du serveur ; Un langage (Java) et plusieurs plate-forme (.NET plusieurs langages et une plate-forme) ;
Puissance :
Disponibilit de lAPI de Java ; Manipulation dimages, connectivit aux bases de donnes (JDBC), etc.
Efcacit :
Une Servlet est charge une seule fois ; Une Servlet conserve son tat ;
Scurit :
Typage fort de Java ; Gestion des erreurs par exception.
48/70
Univ Bx 1 (LaBRI)
L3 INFO
48 / 70
c M. Baron (2006)
49/70
Univ Bx 1 (LaBRI)
L3 INFO
49 / 70
Plan
Fondamentaux
Un conteneur : Tomcat
Servlets
50/70
Univ Bx 1 (LaBRI)
L3 INFO
50 / 70
Conteneurs de Servlets
Denition
Conteneur Une Servlet sexcute dans un conteneur de Servlet permettant dtablir le lien entre la Servlet et le serveur Web. Deux types de conteneurs : conteneurs de Servlets autonomes : serveur web intgrant le support des Servlets ; conteneurs de Servlets additionnels : fonctionnent comme un plug-in un serveur web existant. Principaux conteneurs : Tomcat Server (Apache) ; JBoss ; WebSphere Application Server (IBM) ; Weblogic (BEA) ; ...
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
51/70
51 / 70
Jakarta Tomcat
Tomcat 5 respecte la spcication Servlet 2.4 et JSP 2.0 ; Ecrit entirement en Java, il peut donc tre utilis sur nimporte quel systme disposant dune machine virtuelle ; Disponible gratuitement sous forme dune licence Open Source ; Implmentation de rfrence de la spcication J2EE. Il fournit donc les librairies de faon concevoir des Servlets (javax.servlet.http.HttpServlet)
52/70
Univ Bx 1 (LaBRI)
L3 INFO
52 / 70
avec le gestionnaire de paquets : apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps Ubuntu Feisty : cass, plusieurs problmes ! avec la version archive :
1 2
4 5
Dcompresser larchive ; Modier la variable PATH de faon prendre en compte le chemin binaire de Tomcat ; Ajouter la variable CATALINA_HOME pointant sur le chemin de Tomcat Ajouter la variable JAVA_HOME pointant sur la machine virtuelle Complter la variable CLASSPATH pointant sur les librairies J2EE (CLASSPATH=$CLASSPATH :tomcat/common/lib) Pour vrier que votre serveur fonctionne, lancer startup.sh
53/70
Univ Bx 1 (LaBRI)
L3 INFO
53 / 70
c M. Baron (2006)
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
54/70
54 / 70
Rles
Denition
Rle Permet dajouter des utilisateurs et de dnir des droits sur les Servlets. Ajout, suppression et modication des rles : soit par la Servlet Administration ; soit en ditant directement le chier tomcat-users.xml tomcat-users.xml
<?xml version=1.0 encoding=utf-8?> <tomcat-users> <user username="admin" password="admin" roles="admin,manager" /> </tomcat-users>
Univ Bx 1 (LaBRI)
L3 INFO
55 / 70
Plan
Fondamentaux
Un conteneur : Tomcat
Servlets
56/70
Univ Bx 1 (LaBRI)
L3 INFO
56 / 70
API
c M. Baron (2006)
57/70
Univ Bx 1 (LaBRI)
L3 INFO
57 / 70
HttpServlet
Denition
HttpServlet La classe HttpServlet rednit la mthide service(...) qui interprte la requte HTTP et transmet celle-ci la mthode approprie (doGet(...), doPost(...), doHead(...), ...).
c M. Baron (2006)
58/70
Univ Bx 1 (LaBRI)
L3 INFO
58 / 70
c M. Baron (2006)
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
59/70
59 / 70
c M. Baron (2006)
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
60/70
60 / 70
HttpServletRequest
Principales mthodes : String getMethod() : retourne le type de requte ; String getServeurName() : retourne le nom du serveur ; String getParameter(String name) : retourne la valeur dun paramtre ; String[] getParameterNames() : retourne le nom de tous les paramtres ; String getRemoteHost() : retourne lIP du client ; String getServerPort() : retourne le port sur lequel le serveur coute String getQueryString() : retourne la chane dinterrogation ; ...
61/70
Univ Bx 1 (LaBRI)
L3 INFO
61 / 70
HttpServletResponse
Principales mthodes : void setStatus(int) : dnit le code de retour de la rponse ; void setContentType(String) : dnit le type de contenu MIME ; ServletOutputStream getOutputStream() : ot pour envoyer des donnes binaires au client ; void sendRedirect(String) : redirige le navigateur vers lURL ...
62/70
Univ Bx 1 (LaBRI)
L3 INFO
62 / 70
Pratique
Exercice
Ecrire
1 2
une Servlet HelloWord qui retourne un message de type TEXT ; une Servlet Redirection qui effectue une redirection vers miage.u-bordeaux.fr ; une Servlet InfosServlet qui retourne des informations extraites de la requte HTTP utilise.
63/70
Univ Bx 1 (LaBRI)
L3 INFO
63 / 70
HelloWorld
c M. Baron (2006)
64/70
Univ Bx 1 (LaBRI)
L3 INFO
64 / 70
Redirection
c M. Baron (2006)
65/70
Univ Bx 1 (LaBRI)
L3 INFO
65 / 70
InfosServlet
c M. Baron (2006)
66/70
Univ Bx 1 (LaBRI)
L3 INFO
66 / 70
c M. Baron (2006)
67/70
Univ Bx 1 (LaBRI)
L3 INFO
67 / 70
c M. Baron (2006)
Univ Bx 1 (LaBRI) INF157 - Utilisation des Rseaux L3 INFO
68/70
68 / 70
tlcharger/installer le plugin Tomcat http ://www.eclipsetotale.com/tomcatPlugin.html manuel : http ://www.eclipsetotale.com/articles/tomcat/ ; Attention : le chier web.xml nest pas gnr par le plugin !
Le cours de Mickal Baron aborde des notions plus subtiles : cycles de vie des Servlets ; sessions : cookies, HttpSession ; partage dinformations entre Servlets ; partager le contrle dune requte Http ; authentication ; etc .
70/70
Univ Bx 1 (LaBRI)
L3 INFO
70 / 70