Hyper-Text Transfer Protocol : protocole de transfert d'hyper-texte.
Définir un protocole réseau standard pour l'échange de documents sur le Web (pages HTML).
HTTP est un protocole de l'Internet, basé sur TCP/IP :
Session |
HTTP
|
---|---|
Transport | |
Réseau |
Une trame HTTP est échangée entre un client HTTP (navigateur Web) et un serveur HTTP (serveur Web).
Elle est constituée de :
Le serveur répond un code HTTP.
Version | 1 | Caractéristiques standard | ||
---|---|---|---|---|
Release | 0 | 1 | ||
RFC | 1949 | 2068 | ||
Technologie | Année | en | en | |
Méthodes | Récupération | GET |
||
Envoi | POST |
Envoi des données d'un formulaire typiquement | ||
En-tête | HEAD |
Obtenir les infos d'en-tête (HEADer) d'un fichier | ||
Placement | Non | PUT |
Envoyer un fichier (upload) | |
Suppression | Non | DELETE |
Supprimer un fichier (rarement autorisé, voire implémenté par les serveurs Web) | |
Options | Non | OPTIONS |
||
Mise à jour | Non | UPGRADE |
||
Trace | Non | TRACE |
||
En-tête | Type MIME du contenu | Content-type |
||
Longueur du contenu | Content-length |
Longueur du contenu (en octets) après l'en-tête | ||
Langue supportée | Accept-language |
FR/fr , FR/be , EN/uk , EN/us , etc. |
||
Dernière modification | Last-Modified |
Cache | ||
If-Modified-Since | Oui | Utilisé avec Last-Modified | ||
If-Unmodified-Since | Oui | Utilisé avec Last-Modified | ||
Host | Non | Oui | Machine appelée. Permet aux ISP de faire du cache | |
Range | Non | Oui | Permet aux clients de demander une range | |
Content-Range | Non | Oui | Spécifie si une entité partielle doit être insérée | |
If-Range | Non | Oui | Si l'entité est inchangée, retourner la(les) partie(s) que j'ai manquées, sinon retourner la nouvelle entité entière | |
Etag | Non | Oui | Cache : Validateurs opaques (choisis par le serveur) | |
If-Match | Non | Oui | Utilisé avec Etag | |
If-None-Match | Non | Oui | Utilisé avec Etag | |
Cache-Control | Non | Oui | Contrôle de ce qui est caché (public, private, no-cache), ce qui peut être stocké (no-store), le mécanisme d'expiration (max-age, min-fresh, max-stale) et must-revalidate, proxy-revalidate, no-transform | |
Connection | Non | Oui | Permet au serveur d'indiquer que la connexion va être fermée (Connection: close) |
|
Expires | Oui | Date et heure après laquelle le document doit être considéré comme expiré | ||
Keep-Alive | Ne fonctionne pas bien avec les proxies chaînés | |||
Via | Non | Oui | Utilisé avec TRACE | |
Max-Forwards | Non | Oui | Utilisé avec TRACE | |
Upgrade | Non | Oui | Changement de protocole sur une connexion ouverte | |
Proxy-authenticate | Non | Oui | Authentification des caches de proxies | |
Proxy-Authorization | Non | Oui | Authentification des caches de proxies | |
Content-MD5 | Non | Oui | Vérification du test d'intégrité de condensé de message MD5 | |
Content-Transfer-Encoding | Non | Oui | Compression de bond en bond des entités | |
Vary | Non | Oui | Indique quelles dimensions de la réponse varie | |
Alternates | Non | Oui | Négociation future de contenu : quelles sont les représentations alternatives possibles | |
Refresh: n;URL="uneURL" | Recharge une URL au bout de n secondes. | |||
Age | Non | Oui | Le temps que la réponse a passé dans les caches sur le chemin réseau | |
Code de retour | Ok | 200 | Page trouvée | |
Contenu partiel | 206 | Le serveur n'a pu répondre qu'en partie à la requête | ||
Déplacé temporairement | 302 | L'URL pour la ressource demandée est correcte, mais l'objet est temporairement ailleurs. De futures requêtes fonctionneront. |
||
Non modifié | 304 | Indique au client Web que le rechargement de la page n'est pas nécessaire | ||
Non autorisé | 401 | Authentification requise | ||
Interdit | 403 | La requête est comprise, mais l'accès n'est pas autorisé (étant donnés les droits déduits de l'authentification) | ||
Non trouvé | 404 | Page non trouvée | ||
Méthode non autorisée | 405 | Resource demandée via une méthode non autorisée | ||
Erreur interne du serveur | 500 | Erreur inatendue ayant empêché de servir la requête. Toutes les erreurs de modules annexes (Servlet/JSP, CGI, etc.) du serveur provoquent cette erreur. | ||
Service indisponible | 503 | Serveur temporairement surchargé | ||
Authentification | Basic | Oui | Pop-up navigateur, mot de passe en clair | |
Digest | Non | Oui | Remplacement de Basic authentication (hâchage) |
Un exemple de requête HTTP 1.1 est :
POST
javarome/search.html<br> <strong>Content-type:</strong> application-ext/form-data<br> <strong>Content-length:</strong> 40<br> <strong>Accept-language:</strong> FR/fr, EN/uk<br> <br> query<strong>=</strong>HTTP<strong>&</strong>query<strong>=</strong>protocol<strong>&</strong>result<strong>=</strong>display