Recherche…


Paramètres

Méthode HTTP Objectif
OPTIONS Récupérez des informations sur les options de communication (méthodes et en-têtes disponibles) disponibles sur l'URI de requête spécifié.
GET Récupérer les données identifiées par l'URI de la demande ou les données produites par le script disponible à l'URI de la demande.
HEAD Identique à GET sauf qu'aucun corps de message ne sera renvoyé par le serveur: uniquement les en-têtes.
POST Soumettez un bloc de données (spécifié dans le corps du message) au serveur pour l'ajouter à la ressource spécifiée dans l'URI de la demande. Le plus couramment utilisé pour le traitement de formulaire.
PUT Stockez les informations jointes (dans le corps du message) en tant que ressource nouvelle ou mise à jour sous l'URI de la requête donnée.
DELETE Supprimer ou mettre en file d'attente pour suppression la ressource identifiée par l'URI de la demande.
TRACE Essentiellement, une commande echo: un serveur HTTP compatible et fonctionnel doit renvoyer l'intégralité de la requête en tant que corps d'une réponse 200 (OK).

Remarques

La méthode CONNECT est réservée par la spécification des définitions de méthode pour une utilisation avec des proxys capables de basculer entre les modes de proxy et de tunneling (comme pour le tunneling SSL).

Envoi manuel d'une requête HTTP minimale à l'aide de Telnet

Cet exemple montre que HTTP est un protocole de communication Internet basé sur du texte et affiche une requête HTTP de base et la réponse HTTP correspondante.

Vous pouvez utiliser Telnet pour envoyer manuellement une requête HTTP minimale depuis la ligne de commande, comme suit.

  1. Démarrez une session Telnet sur le serveur Web www.example.org sur le port 80:

    telnet www.example.org 80
    

    Telnet rapporte que vous avez connecté au serveur:

    Connected to www.example.org.
    Escape character is '^]'.
    
  1. Entrez une ligne de demande pour envoyer un chemin d'URL de requête GET / , en utilisant HTTP 1.1

    GET / HTTP/1.1
    
  2. Entrez une ligne de champ d'en-tête HTTP pour identifier la partie du nom d'hôte de l'URL requise, requise dans HTTP 1.1.

    Host: www.example.org
    
  3. Entrez une ligne vide pour compléter la demande.

    Le serveur Web envoie la réponse HTTP, qui apparaît dans la session Telnet.

La session complète est la suivante. La première ligne de la réponse est la ligne d'état HTTP , qui inclut le code d'état 200 et le texte d'état OK , qui indiquent que la demande a été traitée avec succès. Ceci est suivi par un certain nombre de champs d'en-tête HTTP, une ligne vide et la réponse HTML.

$ telnet www.example.org 80
Trying 2606:2800:220:1:248:1893:25c8:1946...
Connected to www.example.org.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.example.org

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/html
Date: Thu, 21 Jul 2016 15:56:05 GMT
Etag: "359670651"
Expires: Thu, 28 Jul 2016 15:56:05 GMT
Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
Server: ECS (lga/1318)
Vary: Accept-Encoding
X-Cache: HIT
x-ec-custom-error: 1
Content-Length: 1270

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is established to be used for illustrative examples in documents. You may use this
    domain in examples without prior coordination or asking for permission.</p>
    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>

(élément de style et lignes vierges supprimées de la réponse HTML, par souci de concision.)

Format de demande de base

Dans HTTP 1.1, une requête HTTP minimale se compose d'une ligne de demande et d'un en-tête d' Host :

GET /search HTTP/1.1 \r\n
Host: google.com \r\n
\r\n

La première ligne a ce format:

Method Request-URI HTTP-Version CRLF

Method doit être une méthode HTTP valide. l'un de [1] [2] :

  • OPTIONS
  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • PATCH
  • TRACE
  • CONNECT

Request-URI indique soit l'URI, soit le chemin d'accès à la ressource demandée par le client. Cela peut être soit:

  • un URI complet, comprenant schéma, hôte, port (facultatif) et chemin d'accès; ou
  • un chemin, auquel cas l'hôte doit être spécifié dans l'en-tête de l' Host

HTTP-Version indique la version du protocole HTTP que le client utilise. Pour les requêtes HTTP 1.1, cela doit toujours être HTTP/1.1 .

La ligne de demande se termine par un retour chariot - un saut de ligne, généralement représenté par \r\n .

Champs d'en-tête de demande

Les champs d'en-tête (généralement appelés simplement «en-têtes») peuvent être ajoutés à une requête HTTP pour fournir des informations supplémentaires à la demande. Un en-tête a une sémantique similaire aux paramètres transmis à une méthode dans tout langage de programmation prenant en charge de telles choses.

Une requête avec des en User-Agent têtes Host , User-Agent et Referer peut ressembler à ceci:

GET /search HTTP/1.1 \r\n
Host: google.com \r\n
User-Agent: Chrome/54.0.2803.1 \r\n
Referer: http://google.com/ \r\n
\r\n

Une liste complète des en-têtes de requête HTTP 1.1 pris en charge peut être trouvée dans la spécification . Les plus courants sont:

  • Host - la partie nom d'hôte de l'URL de la demande (obligatoire dans HTTP / 1.1)
  • User-Agent - une chaîne qui représente l'agent utilisateur demandant;
  • Referer - l'URI dont le client a été renvoyé ici; et
  • If-Modified-Since - donne une date que le serveur peut utiliser pour déterminer si une ressource a changé et indique que le client peut utiliser une copie en cache si ce n'est pas le cas.

Un en-tête doit être formé comme Name: Value CRLF . Name est le nom de l'en-tête, tel que User-Agent . Value correspond aux données qui lui sont affectées et la ligne doit se terminer par un CRLF. Les noms d'en-tête sont insensibles à la casse et ne peuvent utiliser que des lettres, des chiffres et des caractères !#$%&'*+-.^_`|~ (RFC7230 section 3.2.6 Composants de valeur de champ ).

Le nom du champ d'en-tête Referer est une faute de frappe pour «référent», introduit accidentellement dans RFC1945 .

Corps de message

Certaines requêtes HTTP peuvent contenir un corps de message. Ce sont des données supplémentaires que le serveur utilisera pour traiter la demande. Les corps de message sont le plus souvent utilisés dans les requêtes POST ou PATCH et PUT, pour fournir de nouvelles données que le serveur doit appliquer à une ressource.

Les demandes qui incluent un corps de message doivent toujours inclure sa longueur en octets avec l'en Content-Length tête Content-Length .

Un corps de message est inclus après tous les en-têtes et un double CRLF. Un exemple de requête PUT avec un corps peut ressembler à ceci:

PUT /files/129742 HTTP/1.1\r\n
Host: example.com\r\n
User-Agent: Chrome/54.0.2803.1\r\n
Content-Length: 202\r\n
\r\n
This is a message body. All content in this message body should be stored under the 
/files/129742 path, as specified by the PUT specification. The message body does
not have to be terminated with CRLF.

HEAD requêtes HEAD et TRACE ne doivent pas inclure de corps de message.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow