HTTP - Paramètres

Ce chapitre va énumérer quelques-uns des paramètres de protocole HTTP importants et leur syntaxe ainsi que la manière dont ils sont utilisés dans la communication. Par exemple, le format de la date, le format de l'URL, etc. Cela vous aidera à construire vos messages de requête et de réponse lors de l'écriture de programmes client ou serveur HTTP. Vous verrez l'utilisation complète de ces paramètres dans les chapitres suivants tout en apprenant la structure des messages pour les requêtes et réponses HTTP.

Version HTTP

HTTP utilise un <major>.<minor>schéma de numérotation pour indiquer les versions du protocole. La version d'un message HTTP est indiquée par un champ HTTP-Version dans la première ligne. Voici la syntaxe générale de la spécification du numéro de version HTTP:

HTTP-Version   = "HTTP" "/" 1*DIGIT "." 1*DIGIT

Exemple

HTTP/1.0

or

HTTP/1.1

Identificateurs de ressources uniformes

Les identificateurs de ressources uniformes (URI) sont simplement une chaîne formatée, insensible à la casse, contenant le nom, l'emplacement, etc. pour identifier une ressource, par exemple, un site Web, un service Web, etc. Une syntaxe générale d'URI utilisée pour HTTP est la suivante:

URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Ici si le port est vide ou non fourni, le port 80 est supposé pour HTTP et un abs_path équivaut à un abs_pathde "/". Les personnages autres que ceux dureserved et unsafe les ensembles sont équivalents à leur codage ""% "HEX HEX".

Exemple

Les trois URI suivants sont équivalents:

http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html

Formats de date / heure

Tous les horodatages HTTP DOIVENT être représentés en heure moyenne de Greenwich (GMT), sans exception. Les applications HTTP sont autorisées à utiliser l'une des trois représentations suivantes d'horodatage:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

Jeux de caractères

Nous utilisons des jeux de caractères pour spécifier les jeux de caractères que le client préfère. Plusieurs jeux de caractères peuvent être répertoriés séparés par des virgules. Si aucune valeur n'est spécifiée, la valeur par défaut est l'US-ASCII.

Exemple

Voici les jeux de caractères valides:

US-ASCII

or

ISO-8859-1

or 

ISO-8859-7

Codages de contenu

Une valeur de codage de contenu indique qu'un algorithme de codage a été utilisé pour coder le contenu avant de le transmettre sur le réseau. Le codage de contenu est principalement utilisé pour permettre à un document d'être compressé ou autrement utilement transformé sans perdre son identité.

Toutes les valeurs de codage de contenu sont insensibles à la casse. HTTP / 1.1 utilise des valeurs de codage de contenu dans les champs d'en-tête Accept-Encoding et Content-Encoding que nous verrons dans les chapitres suivants.

Exemple

Voici les schémas de codage valides:

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

Types de médias

HTTP utilise les types de média Internet dans le Content-Type et Acceptchamps d'en-tête afin de fournir un typage de données ouvert et extensible et une négociation de type. Toutes les valeurs de type de média sont enregistrées auprès de l'IANA (Internet Assigned Number Authority). La syntaxe générale pour spécifier le type de média est la suivante:

media-type     = type "/" subtype *( ";" parameter )

Les noms d'attributs de type, sous-type et paramètre ne sont pas sensibles à la casse.

Exemple

Accept: image/gif

Balises de langue

HTTP utilise des balises de langue dans le Accept-Language et Content-Languagedes champs. Une étiquette de langue est composée d'une ou plusieurs parties: une étiquette de langue principale et une série éventuellement vide de sous-étiquettes:

language-tag  = primary-tag *( "-" subtag )

Les espaces blancs ne sont pas autorisés dans la balise et toutes les balises sont insensibles à la casse.

Exemple

Les exemples de balises comprennent:

en, en-US, en-cockney, i-cherokee, x-pig-latin

où toute étiquette principale à deux lettres est une abréviation de langue ISO-639 et toute sous-étiquette initiale à deux lettres est un code de pays ISO-3166.