Quand on développe pour le web, on a souvent besoin d’afficher un rendu différent selon le type de navigateur ou le système d’exploitation, ou encore de produire des statistiques selon la plateforme des visiteurs. L’un des moyens utilisés pour cela est précisément la chaîne [User Agent](User Agent) que le navigateur web ajoute aux en-têtes de requête HTTP. Cette méthode, qui consiste à distinguer la plateforme et le navigateur via cette chaîne, est certes très répandue, mais cette chaîne est déjà, depuis l’époque de Netscape, devenue confuse et difficile à interpréter pour des raisons de compatibilité et autres. Aujourd’hui, c’est encore pire : presque tous les navigateurs font semblant d’être d’autres navigateurs. Par exemple, la chaîne User-Agent d’un navigateur que j’utilise est la suivante.
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4003.0 Safari/537.36 Edg/81.0.381.0
Sans autre connaissance préalable, il serait pratiquement impossible de savoir de quel navigateur il s’agit à partir de cette seule chaîne User-Agent. Mozilla Firefox ? Chrome ? Safari ? Edge ? La bonne réponse est Microsoft Edge Dev. La plateforme utilisée semble encore à peu près identifiable, mais si l’on veut parser cette chaîne pour déterminer la plateforme, cela devient vite un casse-tête.
Pour résoudre ce problème, Google a proposé d’abandonner progressivement la chaîne User-Agent et d’utiliser à la place les [Client Hints](Client Hints). Les Client Hints consistent à séparer les informations actuellement contenues dans la chaîne User-Agent en sept champs (nom du navigateur / version majeure du navigateur / version complète du navigateur / nom et version de la plateforme / architecture de la plateforme / modèle matériel / indicateur mobile) et à les ajouter aux en-têtes de requête HTTP.
Google indique que cette année (2020), la chaîne User-Agent de Google Chrome devrait être figée pour ne plus évoluer (elle ne peut pas être supprimée en raison de problèmes de compatibilité), et que l’utilisation de ces Client Hints commencera à la place. Mozilla, Apple, Microsoft et d’autres grands éditeurs de navigateurs web semblent également prévoir de prendre cela en charge, mais aucun détail concret n’a encore été communiqué. Si les autres navigateurs web commencent eux aussi à les utiliser, leur adoption ne devrait pas poser de gros problèmes. Cela dit, au vu de l’attitude de Google, qui traite différemment les services selon qu’il s’agit ou non de son propre navigateur, il est difficile d’accueillir cette proposition à bras ouverts.
Contenu de la proposition de Google sur les Client Hints :
https://wicg.github.io/ua-client-hints/
Histoire de la chaîne User-Agent :
Aucun commentaire pour le moment.