HTTP

Hyper-Text Transfer Protocol : protocole de transfert d'hyper-texte.

Besoin

Définir un protocole réseau standard pour l'échange de documents sur le Web (pages HTML).

Conception

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.

Implémentation

Version 1 Caractéristiques standard
Release 0 1
RFC 1949 2068
Technologie Année 1996 l'année suivante
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)

Exemples

Un exemple de requête HTTP 1.1 est :

POSTjavarome/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

Notes

Limitations