Une requête HTTP est une demande envoyée au serveur par le navigateur. Cela peut être une demande d'un contenu d'un fichier : page html, fichier quelconque... Mais cela peut ne pas aboutir à un retour de contenu. Il est simplement envoyé une commande au serveur.
Dans tout les cas, le navigateur récuperera un code de retour (les codes comme 404, 202 etc...)
En schématisant, une requête HTTP contient deux parties :
L'entête contient entre autre :
Le corps de la requête contient des informations additionnelles. Leurs présences et leurs contenus dépendent du type de la requête.
La méthode GET est simple : on appelle juste une URL classique. Celle-ci peut contenir des paramètres, que le serveur/la page interprétera.
Exemple : http://monsite.com/page.php?param1=valeur1¶m2=valeur2...
Les paramètres sont séparés par une perluette & et chacun est composé comme suit : nom_du_parametre=valeur_du_parametre.
En PHP, dans la page correspondante à l'url, on pourra récupérer ces informations dans le tableau global prédéfini $_GET.
En méthode POST, nous avons également des paramètres. Par contre, ceux-ci ne sont plus indiqués dans l'url, mais dans le corps de la requête. La façon dont ils sont stockés est la même que pour GET, c'est à dire nom_du_parametre=valeur_du_parametre et chacun d'eux séparé par une perluette.
Il faut spécifier également dans l'entête que le type du contenu est application/x-www-form-urlencoded.
En PHP, on pourra récupérer les paramètres dans le tableau $_POST.
L'envois de fichiers fonctionne aussi avec la méthode POST mais necessite plusieurs arguments :
Plutôt que de continuer dans la théorie, je pense qu'un exemple sera plus parlant. Imaginons le formulaire html suivant :
<form enctype="multipart/form-data" action="page.php" method="post">
<input type="hidden" name="addfile" value="1">
<input type="file" name="filename"/>
<input type="submit" value="Add"/>
</form>
Il s'agit d'un simle formulaire d'upload de fichier avec un parametre de type "hidden" en plus (addfile=1). Le corp de la requête HTTP sera le suivant: %%
content-Type: multipart/form-data, boundary=111222111\r\n
\r\n
--111222111\r\n
Content-disposition: form-data;name="addfile"\r\n
\r\n
1\r\n
--111222111\r\n
Content-disposition: form-data;name="filename";filename="nom_fichier"\r\n
Content-Type: application/octet-stream\r\n
Content-Length: taille_du_fichier\r\n
\r\n
...Contenu du fichier...
--111222111--\r\n
Quelques petites remarques :
Pour plus d'information sur l'upload de fichier en HTTP, voir le RFC 1867 :
http://www.faqs.org/rfcs/rfc1867.html
Le contenu de cette page est disponible selon certaines conditions de réutilisation. Lire aussi la page des informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.