HTTP Accept header
Par Florian Strzelecki - 21:45 - 25.04.2014
La RFC 2616 de l'IETF est une spécification du protocole HTTP/1.1. Ce document décrit notamment les headers des requêtes HTTP à disposition des clients, et en particulier le header "Accept", qui sera le sujet de cet article.
À quoi sert-il ?
En résumé : il permet la négociation de contenu dirigée par le client.
En utilisant Accept
, le client indique au serveur HTTP quels types de contenus il est capable de gérer, éventuellement avec un ordre de préférence. Le serveur est alors invité à fournir le type de contenu le plus adapté pour répondre à la demande du client (mais ce n'est pas obligatoire).
Ce paramètre peut être utilisé avec d'autres headers, comme Accept-Language
ou Accept-Encoding
; par exemple, le serveur Apache (qui documente sa méthode de négociation de contenu) utilise plusieurs headers pour déterminer la meilleure réponse possible.
Comment ça marche ?
Prenons un exemple avec une requête envoyée par Firefox (28.0), qui utilise ce header par défaut :
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Ceci indique au serveur que le client attend, par ordre de préférence :
text/html
, ouapplication/xhtml+xml
application/xml
(quality = 0.9)- "peu importe" (quality = 0.8)
Pour le cas d'une balise img
, le header sera différent, et contiendra plutôt image/png
(j'ai d'ailleurs remarqué que l'URL n'est absolument pas prise en compte par le navigateur pour générer son header).