HTTP - Demandes

Un client HTTP envoie une requête HTTP à un serveur sous la forme d'un message de requête qui comprend le format suivant:


     
  • A Request-line
  • Zero or more header (General|Request|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Les sections suivantes expliquent chacune des entités utilisées dans un message de requête HTTP.

Request-Line

La Request-Line commence par un jeton de méthode, suivi de Request-URI et de la version du protocole, et se termine par CRLF. Les éléments sont séparés par des caractères d'espace SP.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Discutons de chacune des parties mentionnées dans la Request-Line.

Méthode de demande

La demande method indique la méthode à exécuter sur la ressource identifiée par le Request-URI. La méthode est sensible à la casse et doit toujours être mentionnée en majuscules. Le tableau suivant répertorie toutes les méthodes prises en charge dans HTTP / 1.1.

SN Méthode et description
1 GET

La méthode GET est utilisée pour récupérer les informations du serveur donné en utilisant un URI donné. Les requêtes utilisant GET ne doivent récupérer que des données et ne doivent avoir aucun autre effet sur les données.

2 HEAD

Identique à GET, mais il ne transfère que la ligne d'état et la section d'en-tête.

3 POST

Une requête POST est utilisée pour envoyer des données au serveur, par exemple des informations client, le téléchargement de fichiers, etc. à l'aide de formulaires HTML.

4 PUT

Remplace toutes les représentations actuelles de la ressource cible par le contenu téléchargé.

5 DELETE

Supprime toutes les représentations actuelles de la ressource cible données par URI.

6 CONNECT

Établit un tunnel vers le serveur identifié par un URI donné.

sept OPTIONS

Décrivez les options de communication pour la ressource cible.

8 TRACE

Effectue un test de boucle de message avec le chemin d'accès à la ressource cible.

Request-URI

Le Request-URI est un identificateur de ressource uniforme et identifie la ressource sur laquelle appliquer la demande. Voici les formulaires les plus couramment utilisés pour spécifier un URI:

Request-URI = "*" | absoluteURI | abs_path | authority
 
SN Méthode et description
1 L'astérisque *est utilisé lorsqu'une requête HTTP ne s'applique pas à une ressource particulière, mais au serveur lui-même, et n'est autorisée que lorsque la méthode utilisée ne s'applique pas nécessairement à une ressource. Par exemple:

OPTIONS * HTTP/1.1

2 le absoluteURIest utilisé lorsqu'une requête HTTP est adressée à un proxy. Le proxy est invité à transférer la demande ou le service à partir d'un cache valide et à renvoyer la réponse. Par exemple:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 La forme la plus courante de Request-URI est celle utilisée pour identifier une ressource sur un serveur ou une passerelle d'origine. Par exemple, un client souhaitant récupérer une ressource directement depuis le serveur d'origine créerait une connexion TCP vers le port 80 de l'hôte "www.w3.org" et enverrait les lignes suivantes:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

Notez que le chemin absolu ne peut pas être vide; si aucun n'est présent dans l'URI d'origine, il DOIT être donné comme "/" (la racine du serveur).

Demander des champs d'en-tête

Nous étudierons l'en-tête général et l'en-tête d'entité dans un chapitre séparé lorsque nous apprendrons les champs d'en-tête HTTP. Pour l'instant, vérifions quels sont les champs d'en-tête de demande.

Les champs d'en-tête de demande permettent au client de transmettre des informations supplémentaires sur la demande et sur le client lui-même au serveur. Ces champs agissent comme des modificateurs de demande.Voici une liste de certains champs d'en-tête de demande importants qui peuvent être utilisés en fonction de l'exigence:

  • Accept-Charset

  • Accept-Encoding

  • Accept-Language

  • Authorization

  • Expect

  • From

  • Host

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Proxy-Authorization

  • Range

  • Referer

  • TE

  • User-Agent

Vous pouvez introduire vos champs personnalisés au cas où vous allez écrire votre propre client et serveur Web personnalisés.

Exemples de message de demande

Maintenant, mettons tout cela ensemble pour former une requête HTTP à récupérer hello.htm page du serveur Web s'exécutant sur tutorialspoint.com

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Ici, nous n'envoyons aucune donnée de requête au serveur car nous récupérons une page HTML simple du serveur. La connexion est un en-tête général et le reste des en-têtes sont des en-têtes de demande. L'exemple suivant montre comment envoyer des données de formulaire au serveur à l'aide du corps du message de demande:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID=string&content=string&/paramsXML=string

Ici, l'URL donnée /cgi-bin/process.cgi sera utilisée pour traiter les données transmises et en conséquence, une réponse sera renvoyée. Icicontent-type indique au serveur que les données transmises sont de simples données de formulaire Web et lengthsera la longueur réelle des données placées dans le corps du message. L'exemple suivant montre comment vous pouvez transmettre du XML brut à votre serveur Web:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>