Syntaxe générale
La syntaxe de la demande (= requête client) est toujours la même :
Code : Autre1
2
3
4
| Ligne de commande (Commande, URL, Version de protocole)
En-tête de requête
<nouvelle ligne>
Corps de requête |
Ligne de commande
Commande est la méthode à utiliser, il spécifie le type de requête, il peut avoir les valeurs :
Citation : WikipédiaGET
C'est la méthode la plus courante pour demander une ressource. Une requête GET est sans effet sur la ressource, il doit être possible de répéter la requête sans effet.
HEAD
Cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-même.
POST
Cette méthode doit être utilisée lorsqu'une requête modifie la ressource.
OPTIONS
Cette méthode permet d'obtenir les options de communication d'une ressource ou du serveur en général.
CONNECT
Cette méthode permet d'utiliser un proxy comme un tunnel de communication.
TRACE
Cette méthode demande au serveur de retourner ce qu'il a reçu, dans le but de tester et d'effectuer un diagnostic sur la connexion.
PUT
Cette méthode permet d'ajouter une ressource sur le serveur.
DELETE
Cette méthode permet de supprimer une ressource du serveur.
Je n'aborderai ici que les plus courantes :
HEAD,
GET et
POST.
Ensuite, vient
URL, c'est-à-dire l'adresse de la page sur le serveur ; elle est du type : "
/repertoire/page.ext".
Traduction : le fichier "
page.ext" dans le dossier "
repertoire" qui se situe à la racine du serveur.
Le dernier élément de
Ligne de commande est la version de HTTP utilisée.
La version que je décris dans ce tuto est HTTP 1.1, je dois donc écrire : "
HTTP/1.1".
Exemple :
Code : Autre1
| GET /repertoire/page.html HTTP/1.1 |
En-têtes
Maintenant, attaquons-nous à l'
en-tête : celui-ci peut contenir tout un tas de valeurs (c'est un peu le même principe que les balises
<meta> en HTML), toujours présentées sous la forme :
Code : Autre
En voici quelques-unes :
- Host: www.site.com
Spécifie le nom de domaine du site, par exemple s'il y a plusieurs sites à la même adresse IP.
- Cookie: nom-cookie=valeur cookie
Permet d'envoyer au serveur les cookies qui ont été enregistrés. Un cookie à toujours un nom et une valeur. Pour en envoyer plusieurs, écrivez-les à la suite, séparés par un point-virgule.
- Connection: Close|Keep-Alive
Définit le type de connexion :
- Close : la connexion est fermée après la réponse
- Keep-Alive : crée une connexion persistante. Avec ce type de connexion, il est même possible d'envoyer une requête sans attendre la réponse à la précédente.
- Content-type: application/x-www-form-urlencoded
Spécifie le type MIME du corps de requête, il sera très utile dans le cas d'une requête POST.
- Content-Length: 42
Spécifie la longueur du corps de requête.
Corps
Pour terminer la requête, on envoie le
corps de requête. Il peut contenir, par exemple, le contenu d'un formulaire HTML envoyé en
POST.
Dans le cas du formulaire, les variables ont un nom et une valeur, comme l'en-tête
Cookie, et les différentes variables sont séparées par des esperluettes : "
&" (notez que les variables passées par
GET sont également séparées par "
&").
Exemple :
Code : Autre1
| variable=valeur&variable2=valeur2 |
HEAD
HEAD demande l'envoi de l'
en-tête de la réponse sans son contenu. Il est intéressant si on veut, par exemple, récupérer des informations sur un fichier ou sur le serveur.
Exemple :
Code : Autre1
2
3
4
| HEAD /fichier.ext HTTP/1.1
Host: www.site.com
Connection: Close
<nouvelle ligne> |
NB : même si le
corps de requête ne contient rien, on termine l'
en-tête sur 2 nouvelles lignes.
GET
GET est la méthode permettant de récupérer le contenu d'un fichier.
Exemple :
Code : Autre1
2
3
4
| GET /fichier.ext HTTP/1.1
Host: www.site.com
Connection: Close
<nouvelle ligne> |
Pour ceux qui pratiquent le PHP notamment,
GET est familier. En effet, pour pouvoir récupérer des variables passées par l'url, il faut faire :
$_GET['variable'].
Pour transmettre ces variables, il faut remplacer la
ligne de commande par quelque chose du type :
Code : Autre1
| GET /fichier.ext?variable=valeur&variable2=valeur2 HTTP/1.1 |
En séparant la liste de variables de l'adresse de la page par un "?" et en séparant chaque variable de la suivante par "&".
POST
Ce dernier est un chouïa plus complexe. Il a le même effet que
GET sauf que, lui, envoie des données via le
corps de la requête.
Il vous faudra spécifier le type des données. Pour un formulaire HTML, il y a 2 valeurs possibles :
- application/x-www-form-urlencoded
valeur par défaut
- multipart/form-data
utilisée notamment pour le download de fichiers.
Il vous faudra également spécifier la longueur du corps.
Exemple :
Code : Autre1
2
3
4
5
6
7
| POST /fichier.ext HTTP/1.1
Host: www.site.com
Connection: Close
Content-type: application/x-www-form-urlencoded
Content-Length: 33
<nouvelle ligne>
variable=valeur&variable2=valeur2 |
Remarque : on peut transmettre des variables
GET avec une requête
POST, il suffit de changer l'url demandée de la même façon que pour
GET.