Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

38
Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 http://perso.ifsic.univ-rennes1.fr/aubry/presentations/ inra_infoservices2002 5èmes journées infoservices - INRA

Transcript of Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Page 1: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Web dynamique : solutions

Sessions sous HTTP

Pascal AUBRY

IFSIC - Université de Rennes 1http://perso.ifsic.univ-rennes1.fr/aubry/presentations/inra_infoservices2002

5èmes journées infoservices - INRA

Page 2: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Web dynamique : les solutions

de SSI à ASP, PHP, JSP

Page 3: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Déroulement d’une requête HTTP

• Envoi d’une requête (URL)

client serveur

démonHTTPD

HTTP

• Attente de la réponse du serveur

• Établissement de la connexion

• Réponse du serveur

• Affichage de la réponse

• Demande de connexion

réponse

• Fermeture de la connexion

Page 4: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Déroulement d’une requête HTTP

• Envoi d’une requête (URL)

client serveur

démonHTTPD

• Attente de la réponse du serveur

• Établissement de la connexion

• Réponse du serveur

• Demande de connexion

protocolesans étatréponse

• Affichage de la réponse

• Fermeture de la connexion

Page 5: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Délivrer un document statique

Page 6: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Délivrer un document statique

système

systèmede fichiers

démonHTTPD

front-end

données

Page 7: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Délivrer un document statique

système

systèmede fichiers

démonHTTPD

front-end

données

Page 8: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Web dynamique : qui fait quoi ?

• Le serveur exécute, le client reçoit– SSI, XSSI, CGI, FastCGI, PHP, ASP, JSP– indépendance vis-à-vis du client (navigateur)– interactivité limitée

• Le serveur envoie, le client exécute– JavaScript embarqué (DHTML), Applet Java– dépendance vis-à-vis du client– plus d’interactivité

Page 9: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

SSI, XSSI :le premier pas vers la dynamique

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><html><head><title>Exemple XSSI</title></head><body bgcolor="#FFFFFF"><!--#config errmsg="erreur de syntaxe dans un (x)SSI" --><!--#set var="x" value="test"--><!--#echo var="x"--><br>Fichier modifié le : <!--#echo var="LAST_MODIFIED" --> <br>Nom du serveur : <!--#echo var="SERVER_NAME" --> <br><!--#if expr="$HTTP_USER_AGENT = 'Mozilla/2.0 (compatible; MSIE 3.01; Windows 95)'" --> Il est temps de se mettre à jour ! <!--#endif --></body> </html>

Page 10: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

CGI : Common Gateway Interface

• Un standard pour l’interface entre applications et serveurs d’informations

• Permet de passer des paramètres aux requêtes– dans l’URL avec la méthode GET

http://serv.dom.org/cgi-bin/script?arg1=val1&arg2=val2– comme des données avec la méthode POST

• Exécution d’un programme sur le serveur– Les informations renvoyées au client sont statiques– Des requêtes successives et l’adéquation des réponses

en fonction des paramètres permettent le dynamisme

Page 11: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

démonHTTPD

fork, exec

Exécution via HTTPd’un programme CGI

système

systèmede fichiers

démonHTTPD

front-end

chargementexécution

terminaison

programmeCGI

Page 12: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

programmeCGI

fork, exec

Exécution via HTTPd’un programme CGI

système

systèmede fichiers

démonHTTPD

front-end

chargementexécution

terminaison

Page 13: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

FastCGI : une solution au coûtdes programmes externes

système

systèmede fichiers

démonHTTPD

front-end

prog.FastCGI

exécution

Page 14: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Scripts côté serveur :les leaders du marché

• Perl• PHP (Php Hypertext Preprocessor)• JSP (Java Server Pages)• ASP (Active Server Pages)• Zope

Page 15: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

L’approche modulaire (PHP, Perl)

système

systèmede fichiers

démonHTTPD

front-end

chargement

module

exécution

Page 16: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

L’approche modulaire (PHP, Perl)

système

systèmede fichiers

démonHTTPD

front-end module

exécution

chargement

Page 17: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Perl

• Practical Extraction and Report Language

• Ressources illimitées

• Module d’Apache (mod_perl) ou stand-alone

• Multi-plateformes

• On aime ou on n’aime pas ;-)

Page 18: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

PHP

• Le plus simple

• Un langage non généraliste (comme Java et Perl)

mais néanmoins très riche (bibliothèques)

• Multi-plateformes

• Un produit libre

Page 19: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Java

• Les servlets– Programme Java exécuté côté serveur– Transformation en byte-code avant exécution– Servies par un serveur dédié (ex : Tomcat)

• JSP (Java Server Pages)– Pages HTML avec Java embarqué– Transformation en Servlets

Page 20: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Le mécanisme JSP

test.java(Java)

test.jar(byte-code)

système

démonHTTPD

front-end

test.jsp(HTML/Java)

ServeurServlets

JVMmoteur

JSP

Page 21: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Le mécanisme JSP

test.java(Java)

test.jar(byte-code)

système

démonHTTPD

front-end

test.jsp(HTML/Java)

ServeurServlets

JVMmoteur

JSP

Page 22: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

ASP

• Tourne nativement sur IIS (MicroSoft)• JavaScript ou VBScript• ASP+ :

– support langages compilés (VB, C++, C#)– du déjà vu quelque part ;-)

• compilation intermédiaire JS et VBS• mécanisme de cache des objets compilés

• portabilité (très) limitée

Page 23: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Zope

• Un environnement de développement• Langage Python• Liaison base de données• Multi-plateformes

Page 24: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Un site web :des responsabilités, des métiers

• Technique (ingénieur)– fonctionnement du service– mise à disposition d’outils– développement

• Éditoriale (rédacteur)– mise à jour du contenu

• Graphique (infographiste)– présentation du site

• Pénale (juriste)

Page 25: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Pourquoi un environnement de développement ?

• Pour gérer l’accès concurrent– les droits sur les systèmes de fichiers sont insuffisants– on utilise souvent une base de données

et/ou une interface web

• Pour séparer les tâches– graphisme, interfaçage Homme/Machine– développement– mise à jour du contenu

• Pour intégrer plusieurs technologies– COM, CORBA, EJB, C/C++, Java, XML

Page 26: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Les environnements de développement

• BEA WebLogic (Java)• Lutris Enhydra (Java, open source)• Netscape Application Server• Jbuilder (Java)• Zope (Python)• Midgard (PHP, open source)• Allaire/Macromedia ColdFusion 5 (CFML)• Vignette Content Suite V6• ...

Page 27: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Une comparaison rapide…

Installation

Apprentissage

Puissance

Portabilité

Outils

Ressources

[Java|VB]Script(+ASP)

Java(+JSP)

Perl(+mod_perl)

PHP Python(+Zope)

…et subjective !

Page 28: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Comment choisir ?

• 1. Évaluer le ou les projets à mettre en œuvre• 2. Évaluer ses moyens

– humains– financiers

• 3. Tenir compte de l’existant– les habitudes– les compétences– les préférences

• 4. Se faire soi-même une idée des produits

Page 29: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Web dynamique : les sessions

Pour la programmation de véritables applications

Page 30: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Les cookies

• Permettent de véhiculer des informations entre client et serveur

• Caractéristiques :– nom (UTILISATEUR)– valeur (Pascal.Aubry)– date de validité (Sunday, 04-Nov-01 23:12:40 GMT)– domaine/serveur (www.zappeur.com)– chemin (/public)

Page 31: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Les cookies

client serveur

requête

réponse

GET /fichier.html HTTP/1.1

réponse

HTTP/1.1 200 OKSet-Cookie: h_cookie=00; path=/; \ expires=Friday, 09-Nov-01 05:23:12 GMT

requête

GET /fichier2.html HTTP/1.1 Cookie: h_cookie=00

Page 32: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Les cookies (limitations)

• La taille– 4Ko par cookie

• Le nombre– 300 cookies par navigateur– 20 cookies par serveur (pour un même client)

• Les clients peuvent « refuser » des cookies

Page 33: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Transmettre des variables d’état

• Objectif : propager des variables entre les requêtes– identité du visiteur– informations de connexion– ...

• Le problème– HTTP est un protocole sans état

• Les solutions– paramètres CGI cachés– cookies– sessions

Page 34: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Solution 1 : paramètres CGI cachés

• Dans chaque formulaire et chaque lien hypertexte, on ajoute un (des) paramètre(s) caché(s) :<form ...> <input type="hidden" name="ident" value="durand"> <input type="hidden" name="pass" value="xx98yy"> ...</form>

<a href="action.php?ident=durand&pass=xx98yy">texte</a>

• Problèmes :– Les liens hypertextes et les grosses variables d’état– on transmet toutes les variables d’état à chaque requête– ça marche, mais ça va bien un moment… ;-)

Page 35: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Solution 2 : cookies

• À chaque changement d’une variable d’état, on envoie un cookie au client qui pourra nous le renvoyer lors de la requête suivante

• Intérêts :– on ne transmet les variables que lorsqu’elles changent– on ne fait pas de ré-écriture des formulaires et des liens

• Problèmes :– nombre et longueur des cookies– il faut encore le faire « à la main »– certains ne supportent pas les cookies...

Page 36: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Solution 3 : les sessions

• Affectation d’un ID unique– pour chaque visiteur non connu (sans ID)– de forme aléatoire

• Liaison (identifiant - données sur le serveur)– stockage mémoire, disque, base de données, ...– format propriétaire, XML (WDDX), ...

• Transmission de l’identifiant– par cookie et/ou ré-écriture (automatique)

Page 37: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Transmission des IDs de session

• Ré-écriture automatique :– <form …> <input type="hidden" name="SESS_ID" value="5kj81l12yhs3"> ...</form>

– <a href="…?…&SESS_ID=5kj81l12yhs3">– <img src="…?…&SESS_ID=5kj81l12yhs3">– <frame src="…?…&SESS_ID=5kj81l12yhs3">– ...

Page 38: Web dynamique : solutions Sessions sous HTTP Pascal AUBRY IFSIC - Université de Rennes 1 .

Difficile d’en dire plus en 45mn ;-)

http://perso.ifsic.univ-rennes1.fr/aubry/presentations/inra_infoservices2002