Il faut rappeler que cette API a de nombreux usages : les plans/cartes peuvent y faire appel pour le calcul de position et des itinéraires, les applications web mobiles pour indiquer les centres d’intérêt qui sont proches, elle peut même servir pour fournir des méta-informations qui seront apportées aux médias de type photo et vidéo.
L'API de Géolocalisation est publiée via « geolocation » dont l'objet parent est « navigator ». Si l'objet existe, l'utilisation du service de géolocalisation est possible. Il est possible de le tester via ce code :
Code JavaScript : | Sélectionner tout |
1 2 3 4 5 | if ("geolocation" in navigator) { /* géolocalisation possible */ } else { alert("Le service de géolocalisation n'est pas disponible sur votre ordinateur."); } |
Les appels aux méthodes de géolocalisation sont asynchrones, elles sont donc lancées en parallèle à l’exécution du programme qui continue de s’exécuter en attendant les informations nécessaires. Pour obtenir la position actuelle de l'utilisateur, il est possible d'appeler la méthode getCurrentPosition(). Cela initie une requête asynchrone pour détecter la position de l'utilisateur tout en demandant au dispositif de garder cette position actualisée. Une fois que cette position est déterminée, une fonction de rappel peut prendre en arguments toutes les valeurs ainsi réunies (longitude, latitude, altitude - cette dernière donnée est facultative -). Bien sûr, pour des raisons de confidentialité, pour pouvoir tirer parti de cette API au même titre que celle qui active par exemple le micro de l’utilisateur pour lancer une recherche vocale sur Google, un appel à ces fonctions nécessite un message d’avertissement explicite pour l’utilisateur qui doit alors donner son consentement.
Pourquoi Google veut-il effectuer ce changement ? Si Google estime que cette mesure n’est pas suffisante pour protéger les utilisateurs d’une utilisation non volontaire de leurs données, l’entreprise rappelle que les données de géolocalisation sont par essence très sensibles. « Exiger HTTPS est requis pour protéger la vie privée des données de géolocalisation de vos utilisateurs. Si les données de géolocalisation sont disponibles dans un contexte non sécurisé, les attaquants sur un réseau seront en mesure de déterminer où l’utilisateur se trouve. Ce qui compromet sérieusement la vie privée ».
Quels sites sont impactés ? Ceux qui font usage de l’API Geolocalisation dans un contexte non sécurisé. Google précise par ailleurs que les iframes HTTPS qui font appel à cette API et sont imbriqués dans des pages HTTP sont également concernés.
Mais alors est-ce qu’une application web dans son ensemble doit faire usage du protocole HTTPS pour se servir de l’API Geolocalisation sur Chrome ? Google explique que cela n’est pas nécessaire. « Seules les pages qui font appel à cette API doivent le faire dans un contexte sécurisé », explique Google, rappelant que cette mesure n’affecte pas les développements en local.
Les développeurs disposent également d’un moyen de détecter si la géolocalisation a été bloquée parce qu’elle ne figure pas dans un contexte sécurisé via l’objet PositionError qui est passé dans la fonction de rappel d’erreur de l’API Geolocalisation. Cet objet définit les propriétés « code » et « message ». Les erreurs dues à un problème de contexte de sécurité vont attribuer à « code » la valeur 1 pour « Permission Denied Error ». Cette erreur est générée lorsqu’un utilisateur refuse l’accès à ses données de géolocalisation ou alors lorsque le système le fait. Pour savoir la raison exacte de cette erreur, il faut donc se pencher du côté de la valeur de la propriété « message ».
Source : blog développeurs Google