Le World Wide Web

Transcription

Le World Wide Web
Le World Wide Web
Introduction
Daniel Hagimont
Laurent Broto
IRIT/ENSEEIHT
13 mars 2011
1 / 34
Copyright (c) 2010 Daniel Hagimont & Laurent Broto.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation ;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ”GNU
Free Documentation License”.
2 / 34
Historique
• Système d’information hypermédia
• Né en 1989, par Tim Berners-Lee au CERN
• Concept de base universelle d’information
• Accès aux bases d’information
• Accessibles à tous et partout
• Liens entre les informations
• Informations sous différents formats (multimédia)
3 / 34
Principe
• Système client-serveur
• Trois aspects
◦ Désignation et localisation des documents (URI/URN/URL)
◦ Codage des documents (HTML, types MIME)
◦ Protocole de requête et transfert de documents (HTTP)
4 / 34
Langage HTML
• HTML : Hyper Text Markup Language
◦ Langage de description d’information structurée portable
◦ Organisme de standardisation : WWW consortium
◦ HTML 4.01 : http://www.w3.org/TR/html401/
• <balise attributs> contenu </balise>
◦ balise (tag), ex : <html>
◦ attributs : représente des options, ex : <table width=”60%”>
◦ contenu : texte, images ou d’autres balises
◦ </balise> : fin de la balise
5 / 34
Syntaxe (exemple)
<HR>
<IMG SRC=” monimage . g i f ” WIDTH=100 HEIGHT=120>
<H1>C e c i e s t un t i t r e</H1>
<h2>C e c i e s t un s o u s − t i t r e</ h2>
<A HREF=” h t t p : / / h o s t / d i r / f i l e . h t m l ”> l i e n</A>
<!−− Commentaire −−>
6 / 34
Syntaxe XHTML
• XHTML est une transposition en syntaxe XML de HTML
◦ http://www.w3.org/TR/2002/REC-xhtml1-20020801/
◦ syntaxe plus rigoureuse, notamment :
• toute balise ouvrante doit être fermée (<img alt=”...”/>)
• noms des balises et des attributs en minuscules
• elements HTML correctement imbriqués
• recommandé !
7 / 34
Principales balises
• <a> lien hypertexte attribut : <href> ou <name>
• <em> met en emphase une portion de texte
• <img> inclut une image dans le document, attributs : <alt>
(texte alternatif) et <src> (chemin vers l’image)
• <div> conteneur generique de type bloc
• <p> paragraphe de texte
• <table> ecriture d’un tableau voir aussi <tr>, <td>, <th>
• <h1>, <h2>, . . . <h6> niveaux de titres
• <ol>, <ul> listes ordonnees ou a puces simples, chaque element
(item) sera ecrit <li>
• <form> formulaire interactif
8 / 34
Structure d’un document
<!DOCTYPE html PUBLIC ”−//W3C//DTD XHTML 1 . 0 S t r i c t //EN”
” h t t p : / / www . w3 . o r g /TR/ x h t m l 1 /DTD/ xhtml1−s t r i c t . d t d ”>
<html >
<head >
<!−− d e f i n i t i o n de l ’ URL de r e f e r e n c e du document −−>
<b a s e h r e f=” h t t p : / / m o n s e r v e u r . mondomaine / d i r /HTML. h t m l ” />
<!−− c o n t i e n t d e s meta−i n f o r m a t i o n s −−>
<meta h t t p−e q u i v=” C o n t e n t−Type ” c o n t e n t=” t e x t / h t m l ; c h a r s e t=u t f −8” />
<meta name=” a u t h o r ” c o n t e n t=” a u t e u r ” />
<!−− d&e a c u t e ; f i n i t l e t i t r e du document : t i t r e de l a f e n e t r e />
< t i t l e>Exemple de document</ t i t l e>
</ head>
<body>
<h1>Un t i t r e</ h1>
<d i v>Un b l o c .
<p>Un p a r a g r a p h e .</p>
<p>Un d e u x i&e g r a v e ; me p a r a g r a p h e .</p>
</ d i v >
</ body >
</ html >
HTML : langage de description de contenu, pas de sa présentation
9 / 34
Mise en page
• CSS : Cascading Style Sheet
◦ Feuilles de style
◦ Correctement pris en charge depuis 2000
◦ http://www.w3.org/TR/CSS2
• Documentations
◦ Valider son code HTML
• http://validator.w3.org/
◦ Valider son code CSS
• http://jigsaw.w3.org/css-validator/
◦ Tutoriels HTML – CSS
• http://www.alsacreations.com/tutoriels/
10 / 34
Syntaxe
•
/* les titres de types h1 seront en bleu et centres */
h1 {
color: blue ;
text-align: center;
}
/* on peut appliquer des proprietes a des classes d’objet :
ici seuls les paragraphes de classe ’note ’ auront cette
propriete */
p.note {
font-family: Arial, sans-serif;
font-style: italic;
}
/* les balises html peuvent aussi etre dotees d’un attribut
id qui doit alors etre unique dans la page */
p#menu {
font-weight: bold;
}
/* ou encore */
#menu {
font-weight: bold;
}
/* agir sur les ancres du paragraphe " menu " */
#menu a {
text-decoration: none; /* default : underline */
}
11 / 34
Dans l’entête du document
<head >
...
<s t y l e t y p e=” t e x t / c s s ”>
h1 { c o l o r : b l u e ; }
</ s t y l e>
...
</ head>
•
Dans les balises
<h1 s t y l e=” c o l o r :
b l u e ; ”>
T i t r e de l a page</ h1>
•
Référence à une feuille externe
<head>
...
<l i n k r e l=” s t y l e s h e e t ”
t y p e=” t e x t / c s s ”
h r e f=” s t y l e s . c s s ” />
...
</ head>
Le protocole HTTP
• HTTP : HyperText Transfer Protocol
◦ Modèle client-serveur pour le transfert des documents hypertextes
◦ Protocole utilisé par les serveurs Web depuis 1990
◦ Protocole minimaliste basé sur TCP/IP et utilisant des messages sous
forme de chaı̂nes de caractères
• URL : Uniform ressource Locator
◦ method://machine[:port]/fichier[#ancre|?param]
• method:file/ftp/http/telnet/news/mailto
• Transaction HTTP one-shot
12 / 34
Requête HTTP
Méthode
Destination
Descriptif
Fin En-tête
Corps
Method URL HTTP ver
Host :
If-Modified-Since :
Referer
User-Agent :
Accept :
Content-Encoding :
Content-Length :
Content-Type :
...
CRLF
...
GET, HEAD, POST, . . .
adresse électronique du client
accès à la ressource si modification depuis
URL du lien ayant émis la requête
information sur le client
types MIME supportés par le client
type de codage du corps de la requête
taille du corps de la requête
type MIME du corps de la requête
ligne blanche
surtout POST et PUT
GET /chemin/vers/fichier.html HTTP/1.0
Host: enseeiht.fr:80
If-Modified-Since: Monday, 19-Jan-96 14:30:36 GMT
User-Agent: Mozilla/2.0b6a (X11; I; OSF1 V3.2 alpha)
13 / 34
Les méthodes HTTP
GET
HEAD
POST
OPTIONS,
CONNECT, TRACE
PUT
DELETE
14 / 34
Pour
Pour
Pour
Pour
récupérer une ressource
obtenir des informations sur une ressource
récupérer une ressource
interroger le serveur sur son état
Pour ajouter ou remplacer une ressource
Pour supprimer une ressource
Réponse HTTP
Status
En-tête
Descriptif
Fin En-tête
Document
HTTP-Version
Location :
Server :
Content-Encoding :
Content-Length :
Content-Type :
Date
Expires
Last-Modified :
...
CRLF
...
Status-Code Reason-Phrase
URL exacte de la ressource demandée
informations sur le serveur
type de codage du corps de la requête
taille du corps de la requête
type MIME du corps de la requête
date de la génération de la réponse
date d’expiration du document
dernière modification du document
ligne blanche
contenu du document demandé
HTTP/1.1 200 OK
Date: Fri, 09 Jan 1998 09:49:11 GMT
Server: Apache/1.3b2
Last-Modified: Tue, 19 Aug 1997 11:57:17 GMT
Content-Length: 118+
Content-Type: text/html
<html>
...
15 / 34
Code de retour
• Classe 1 : information (pas utilisé)
• Classe 2 : succès
◦ 200 (OK), 201 (created), 204 (no content), . . .
• Classe 3 : redirection
◦ 301 (moved permanently), 304 (not modified), . . .
• Classe 4 : erreur client
◦ 400 (bad request), 401 (Unauthorized), 404 (not found), . . .
• Classe 5 : erreur serveur
◦ 500 (internal serveur error), 501 (not implemented), 503 (service
unavailable), . . .
16 / 34
Cookies HTTP
• Limitations d’HTTP
◦ Protocole sans mémoire
◦ Pas d’identification simple du client
• Cookies
◦ Mécanisme de stockage d’informations chez le client (pris en compte
par le serveur à chaque accès)
◦ Exemples d’utilisation :
• sauvegarde d’option
• validité d’accès à un serveur payant
• ...
17 / 34
Cookies : création par le serveur
• Dans l’en-tête HTTP
◦ Set-Cookie : Nom=Valeur ; expires=Date ; path=Chemin ;
domain=NomDomaine ; secure
Nom
expires
domain
path
secure
18 / 34
associe une valeur a une variable spécifique
(obligatoire)
date d’échéance du cookie
identification du cookie par rapport au serveur accédé (defaut : serveur HTTP)
association à un ensemble de ressources
(fichiers)
utilisation d’une connexion sécurisée
(HTTPS)
Cookies : gestion par le client
• A
◦
• A
◦
réception d’une réponse
Mémorise les cookies qu’il reçoit
émission d’une requête
Recherche parmi les cookies mémorisés ceux s’appliquant au couple
serveur/URL
◦ Ajoute dans la requête une ligne par paire nom/valeur
• A
◦
◦
◦
noter
Plusieurs directives Set-cookie insérables par le serveur
Nombre et taille des cookies limités
Effacement d’un cookie possible en précisant pour expires une date
périmée
◦ Un cookie sans date expire à la mort du navigateur
19 / 34
Exemple
• Requête - Client
GET /chemin/vers/fichier.html HTTP/1.0
• Réponse - Serveur
HTTP/1.1 200 OK
Date: Tue, 07 Aug 2001 21:36:13 GMT
Server: Apache-AdvancedExtranetServer/1.3.19
Set-Cookie: id=0xa11111; expires=Friday,
10-March-09 00:00:00 GMT; path=/
Content-Type: text/html
<HTML>
...
• Nouvelle requête - Client
GET /chemin/vers/fichier.html HTTP/1.0
Cookie: id=0xa11111;
20 / 34
Formulaires et CGI
• Limitations
◦ Requête limitée à la demande de ressources statiques
◦ Besoin d’exécuter une application sur le serveur HTTP
◦ Besoin de fournir des données
• Solution
◦ Formulaires HTML pour la saisie
◦ Scripts CGI pour l’exécution
21 / 34
Formulaires HTML
Ecriture d’un formulaire
<form a c t i o n=” u r l ” method=” methode ”>
...
</ form>
• url : identifie le programme utilisé pour traiter le formulaire
• methode : méthode à utiliser pour transmettre l’information au
serveur
◦ GET : données ajoutées à l’URL
◦ POST : données envoyées dans le corps du message
22 / 34
Eléments de formulaires
• Eléments INPUT
<i n p u t t y p e=” t y p e ” name=”nom” s i z e=” s i z e ”
m a x l e n g t h=”max” c h e c k e d=” c h e c k e d ” v a l u e=” v a l ” />
• Différents types possibles
TEXT
Champ de saisie de texte
PASSWORD
Champ de saisie de texte caché
SUBMIT
Bouton de soumission du formulaire
CHECKBOX
Bouton à cocher
RADIO
Bouton à cocher de type radio
HIDDEN
Champ invisible
• On envoie dans la requête nom=val
23 / 34
Eléments de formulaires
• Eléments SELECT
< s e l e c t name=”nom” s i z e=” ” m u l t i p l e=” ”>
<o p t i o n>p r e m i e r e o p t i o n</ o p t i o n>
<o p t i o n s e l e c t e d=” s e l e c t e d ”>
Deuxieme o p t i o n</ o p t i o n>
...
</ s e l e c t>
• Elément TEXTAREA
<t e x t a r e a name=”nom” rows=” n b L i g n e s ”
c o l s=” n b C o l o n n e s ”>
t e x t e par defaut
</ t e x t a r e a>
24 / 34
Exemple
<html>
<head>< t i t l e>MaBanque</ t i t l e></ head>
<body>
<form method=” p o s t ” a c t i o n=” / s e r v l e t / BanqueAccount ”>
<p>numero de compte<i n p u t t y p e=” t e x t ” name= ”num”>
</p>
<p>montant<i n p u t t y p e=” t e x t ” name= ” v a l ”></p>
<p><i n p u t t y p e=” s u b m i t ” name=” o p e r a t i o n ”
v a l u e=” s o l d e ”>
<i n p u t t y p e=” s u b m i t ” name=” o p e r a t i o n ” v a l u e=” d e b i t ”>
<i n p u t t y p e=” s u b m i t ” name=” o p e r a t i o n ” v a l u e=” c r e d i t ”>
</p>
</ form>
</ body>
</ html>
25 / 34
Exemple - résultat
26 / 34
Scripts CGI
• Programme générant un contenu en réponse à une requête
• Programmé dans n’importe quel langage
◦ Perl, C, C++, Java, shell, . . .
• Placé dans un répertoire particulier du serveur Web (cgi-bin)
• Envoie le contenu sur STDOUT
• Doit envoyer entête (type mime) + contenu
◦ Pour HTML : content-type : text/html
27 / 34
Serveur web dynamique - CGI
28 / 34
Requête à un CGI
• Envoi de paramètres
◦ champ1=valeur1&champ2=valeur2...
• Les requêtes GET et POST
◦ GET : paramètres inclus dans l’URL
http://nom_du_serveur/cgi-bin/script.cgi?champ1=valeur1&...
• Limitation à 255 catactères, visible, . . .
◦ POST : paramètres inclus dans le corps de la requête HTTP
◦ Utilisation de formulaires (pour interactions)
• Réception des paramètres
◦ GET : variable d’environnement QUERY STRING
◦ POST : STDIN, et variable d’environnement CONTENT LENGTH
29 / 34
Exemple GET - Serveur
#! / b i n / b a s h
function extract parameter ()
{
echo you s u b m i t t e d t h e f o l l o w i n g key−v a l u e p a i r s ”<br>”
s t r=$1
w h i l e [ ” $ s t r ” != ” ” ] ;
do
echo − ‘ echo $ s t r | c u t −f 1 −d ’ & ’ ‘ ”<br>”
s t r =‘ echo $ s t r | c u t −s −f 2 − −d ’ & ’ ‘
done
}
echo ” C o n t e n t −Type : t e x t / h t m l ”
echo ” ”
e x t r a c t p a r a m e t e r $QUERY STRING
echo ” ”
30 / 34
Exemple GET - Client
laurent@sarah:~$ telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is ’^]’.
GET /cgi-bin/test-cours?nom=toto&prenom=titi HTTP/1.0
Host: localhost
HTTP/1.1 200 OK
Date: Thu, 30 Sep 2010 11:10:01 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
you submitted the following key-value pairs <br>
- nom=toto <br>
- prenom=titi <br>
Connection closed by foreign host.
31 / 34
Exemple POST - Serveur
#! / b i n / b a s h
function extract parameter ()
{
echo you s u b m i t t e d t h e f o l l o w i n g key−v a l u e p a i r s ”<br>”
s t r=$1
w h i l e [ ” $ s t r ” != ” ” ] ;
do
echo − ‘ echo $ s t r | c u t −f 1 −d ’ & ’ ‘ ”<br>”
s t r =‘ echo $ s t r | c u t −s −f 2 − −d ’ & ’ ‘
done
}
echo ” C o n t e n t −Type : t e x t / h t m l ”
echo ” ”
r e a d QUERY STRING
e x t r a c t p a r a m e t e r $QUERY STRING
echo ” ”
32 / 34
Exemple POST - Client
laurent@sarah:~$ telnet localhost 80
Connected to localhost.
Escape character is ’^]’.
POST /cgi-bin/test-cours? HTTP/1.0
Host: localhost
Content-length: 20
nom=toto&prenom=titi
HTTP/1.1 200 OK
Date: Thu, 30 Sep 2010 11:17:41 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
you submitted the following key-value pairs <br>
- nom=toto <br>
- prenom=titi <br>
Connection closed by foreign host.
33 / 34
Conclusion
• Initialement
◦ Web statique
◦ Principalement des serveurs
• de page HTML
• accédés par HTTP
• Evolution vers des sites dynamiques
◦ Formulaires HTML pour saisie
◦ Scripts CGI pour génération dynamique de pages
◦ Souvent il faut accéder à une BD
• Programmation fastidieuse
34 / 34

Documents pareils