HTTP (HyperText Transfer Protocol)
www.monsite.fr)GET) sur une ressource
(/projet/doc.html), en écrivant un message :GET /projet/doc.html »GET /projet/doc.html)Envoi d’une réponse au client avec :
ou :
/projet/doc.html »);Arborescence de chemins d’accès aux ressources accessibles (dans les URL) différente d’une éventuelle arborescence de stockage effectif à l’intérieur du serveur.
- …
Choix du serveur arbitraire en fonction du contexte de la requête.
Comment le client peut-il transmettre des données au serveur ?
Contexte explicite pour les applications dynamiques
L’URL peut contenir des informations, des variables ayant des valeurs.
Les arguments d’une méthode GET : clés - valeurs
Exemple :
http://www.monsite.fr/projet/service.php?id=3&nb=42
| nom | valeur | 
|---|---|
| id | 3 | 
| nb | 42 | 
Le corps de la requête peut aussi servir transmettre des données : ex. méthode POST (voir ci-après)
GET… mais URL pas constantes (et passablement longues)Installation Apache en local
ASCII 7 bits (facile à débugger)Canevas :
Méthode Document Version_HTTP
En-têtes
                                     (Ligne vide)
Contenu du Message          optionnel
  ...(saisie d'un formulaire, document à publier)...
La ligne vide est importante (fin des en-têtes)
Exemple :
1: GET /hello.txt HTTP/1.1 2: User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 3: Host: www.example.com 4: Accept-Language: en, mi 5: 6:
Canevas :
Version_HTTP Code Signification
En-têtes
                                     (Ligne vide)
Contenu du Message
  ...(document HTML, image, ...)...
Exemple :
1: HTTP/1.1 200 OK 2: Date: Mon, 27 Jul 2009 12:28:53 GMT 3: Server: Apache 4: Content-Length: 72 5: Content-Type: text/plain 6: 7: Salut tout le monde. Mon contenu contient un retour charriot à la fin. 8:
| Opération | Méthode HTTP | SQL | |
|---|---|---|---|
| C | Create (création) | PUT / POST | INSERT | 
| R | Read (accès) | GET | SELECT | 
| U | Update (m-à-j) | PUT / PATCH | UPDATE | 
| D | Delete (suppr.) | DELETE | DELETE | 
Demande du document premier.html par le navigateur (firefox)
GET /premier.html  HTTP/1.1            requête
Connection: Keep-Alive                 en-têtes (début)
User-Agent: Mozilla/5.0 (Firefox/3.0.2)
Host: telecom-sudparis.eu
Accept: image/gif, image/jpeg, */*     en-têtes (fin)
                                       ligne vide
                                       ici contenu vide
Regardez les en-têtes dans les outils pour le développeur de vos navigateurs
Envoi du document HTML par le serveur Web Apache
   HTTP/1.1 200 OK                         réponse
   Date: Mon, 11 Nov 2008 17:47:24 GMT     en-têtes (début)
   Server: Apachee/2.2.3 (Debian GNU/Linux) 
           Perl/v5.8.4 PHP/5.2.6 
   Last-Modified: Wed, 28 Apr 2008 15:55:02 GMT
   Content-length: 327
   Content-type: text/html                 en-têtes (fin)
                                           ligne vide
   <HTML>                                  contenu
   ... document HTML ...
   </HTML>
La première ligne contient le code de statut :
200 OK
Récupérer la représentation d’une ressource
GET doc.html...programme?nom=paulEn pratique, au-delà de cette séquence, vous utiliserez et gérerez principalement :
GETPOSTL’affaire se corsera pour ceux qui s’intéresseront aux services Web fonctionnant avec des API sur HTTP (REST)
200 Okay404 Not Found501 Internal Server ErrorAussi bien dans requêtes ou réponses
Cache-Control, Pragma, ViaConnectionDateMIME-Version, Transfer-EncodingAcceptAccept-Encoding, Accept-Charset, Accept-Language, …HostFromRefererUser-AgentAuthorizationCookieIf-Modified-SinceIf-MatchIf-RangeIf-Unmodified-SinceMax-ForwardsContent-TypeContent-LengthContent-EncodingContent-LocationLast-ModifiedExpiresServerAccept-RangeLocationAgeRetry-AfterWarningAllow : méthodes autoriséesEtag : entité de balisageWWW-AuthenticateSet-Cookie
Sera vu en partie TP
Client en ligne de commande
man curl