Paramétrer son serveur cartographique pour le JSON-P¶
Enjeux¶
Pour afficher un flux WFS dans une librairie cartographique web, il est nécessaire de récupérer les données pour ensuite les visualiser. Or, la requête est la plupart du temps bloquée par le principe du Cross Domain qui vise à empêcher deux serveurs possédant un domaine différent de s’échanger des données.
Le JSONP permet de contourner ce problème, en encapsulant le résultat dans une balise <script>
(voir l’article dédié au JSONP sur Journal du Net). Pour ne pas avoir d’erreur Javascript, le résultat est contenu dans une fonction, il faut donc connaître le nom de cette fonction pour pouvoir utiliser la réponse.
Parmi les serveurs cartographiques les plus répandus, tous ne permettent pas de générer du JSONP via le paramètre OUTPUTFORMAT=
. Nous présentons ici la solution avec GeoServer (serveur cartographique libre et gratuit), Esri ayant implanté ses propres versions des standards (voir Esri Feature/service d’entités correspondant au WFS).
GeoServer¶
GeoServer permet de renvoyer du JSONP si la fonctionnalité a été activée (elle est désactivée par défaut). Pour activer ce paramètre, il faut créer une variable d’environnement dépendant de l'utilisateur exécutant le service GeoServer nommée ENABLE_JSONP
avec pour valeur true
puis redémarrer le service GeoServer.
Pour cela il est recommandé d'utiliser la commande SETX :
SETX /u myuser [/p [<Password>]] ENABLE_JSONP true
Une fois cette manipulation effectuée, lors d’une requête GetCapabilities
sur l’un de vos services WFS provenant de GeoServer, le format JSONP est présent.