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=paul
En pratique, au-delà de cette séquence, vous utiliserez et gérerez principalement :
GET
POST
L’affaire se corsera pour ceux qui s’intéresseront aux services Web fonctionnant avec des API sur HTTP (REST)
200 Okay
404 Not Found
501 Internal Server Error
Aussi bien dans requêtes ou réponses
Cache-Control
, Pragma
, Via
Connection
Date
MIME-Version
, Transfer-Encoding
Accept
Accept-Encoding
, Accept-Charset
, Accept-Language
, …Host
From
Referer
User-Agent
Authorization
Cookie
If-Modified-Since
If-Match
If-Range
If-Unmodified-Since
Max-Forwards
Content-Type
Content-Length
Content-Encoding
Content-Location
Last-Modified
Expires
Server
Accept-Range
Location
Age
Retry-After
Warning
Allow : méthodes autorisées
Etag : entité de balisage
WWW-Authenticate
Set-Cookie
Sera vu en partie TP
Client en ligne de commande
man curl
Fin sur Mini-Allociné
À caser d’ici le 04/10