IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

Géocodage d'erreur via les webservices IGN : Erreur SEC7120


Sujet :

IGN API Géoportail

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 62
    Points : 51
    Points
    51
    Par défaut Géocodage d'erreur via les webservices IGN : Erreur SEC7120
    Bonjour,

    Nous cherchons à géocoder des adresses (à l'unité tout d'abord puis en masse) à partir d'une page web en utilisant les webservices.
    Le code de notre page asp est le suivant :

    < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
    < head>
    < meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://api.ign.fr/geoportail/api/js/latest/Geoportal.js"></script>
    < script language="JavaScript">
    function submitForm()
    {
    var req = null;
    document.ajax.dyn.value="Started...";
    if (window.XMLHttpRequest)
    {
    req = new XMLHttpRequest();
    }

    req.onreadystatechange = function()
    {
    document.ajax.dyn.value="Wait server...";
    if(req.readyState == 4)
    {
    if(req.status == 200)
    {
    document.ajax.dyn.value=req.responseText;
    }
    else
    {
    document.ajax.dyn.value="Error: returned status code " + req.status + " " + req.statusText;
    }
    }
    };
    var oResp = req.open("GET", "http://wxs.ign.fr/<MA CLEF>/ols/apis/completion?text=2%2C%20avenue%20pasteur%20saint%20m&type=StreetAddress&maximumResponses=5", true);
    req.send(null);
    }
    </script>
    <title>Ajax get small example</title></head>

    <body>
    <FORM name="ajax" method="POST" action="">
    <p>
    <INPUT type="BUTTON" value="Envoyer" ONCLICK="submitForm()">
    </p>
    <p>
    Reçu: <input type="text" name="dyn" size="32" value="">
    </p>
    </FORM>
    </body>
    </html>


    Le debogueur du navigateur nous indique les erreurs suivantes :

    SEC7118: XMLHttpRequest pour http://wxs.ign.fr/<ma CLEF>/ols/apis/completion?text=2%2C%20avenue%20pasteur%20saint%20m&type=StreetAddress&maximumResponses=5 nécessite une spécification CORS (Cross Origin Resource Sharing).
    SEC7120: Origine http://localhost introuvable dans l’en-tête Access-Control-Allow-Origin.
    SCRIPT7002: XMLHttpRequest: Erreur réseau 0x80070005, Accès refusé.


    Cette même url si elle est saisie directement dans la zone de saisie de l'url du navigateur renvoie :
    <Exception exceptionCode="MissingRights">Wrong referer</Exception>

    Pourtant, ma clef comprend bien la fonctionnalité suivante :
    Liste des groupes de ressources de la clé: Groupe Adresses (OpenLS)
    - StreetAddress


    Est-il nécessaire de se connecter avec des identifiants en plus de la Clef IGN pour utiliser les web services ?
    Avez-vous une idée car ce n'est pas faute d'avoir cherché..
    Merci d'avance

  2. #2
    Membre confirmé Avatar de tcoupin
    Homme Profil pro
    Ingénieur Géodésien
    Inscrit en
    Octobre 2012
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Géodésien
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 276
    Points : 525
    Points
    525
    Par défaut
    Il s'agit d'un problème de cross-domain.
    Pour résumer, un script javascript a le droit de requêter des XML ou des JSON uniquement hébergés sur le même domaine.
    Un peu plus de détails sur cette page trouvée sur Google http://margaine.com/2014/06/28/jsonp-vs-cors.html

    Il existe 2 méthodes de contournement : le proxy ou le JSONP. Voici un peu de documentation http://api.ign.fr/tech-docs-js/fr/we.../js/proxy.html

    Thibault

  3. #3
    Membre confirmé Avatar de acarme
    Femme Profil pro
    Ingénieur d'études en Géomatique
    Inscrit en
    Avril 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études en Géomatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 237
    Points : 522
    Points
    522
    Par défaut
    Bonjour,

    Comme l'explique tcoupin, vous avez un problème de cross-origin, pour le résoudre vous avez 2 solutions :

    1. Passer par un proxy (cf documentation de tcoupin)
    2. Utiliser le gecodage avec des requêtes GET KVP en utilisant le paramètre callback (qui permet de mettre en oeuvre le protocole JSONP)
    un exemple ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    http://wxs.ign.fr/votrecle/geoportail/ols?xls=%3CXLS%20xmlns%3D%22http%3A//www.opengis.net/xls%22%20version%3D%221.2%22%3E%3CRequestHeader%20sessionID%3D%22%22/%3E%3CRequest%20methodName%3D%22GeocodeRequest%22%20version%3D%221.2%22%20requestID%3D%22%22%20maximumResponses%3D%22100%22%3E%3CGeocodeRequest%3E%3CAddress%20countryCode%3D%22StreetAddress%22%3E%3CStreetAddress%3E%3CStreet%3Ehonry%3C/Street%3E%3C/StreetAddress%3E%3CPlace%20type%3D%22Municipality%22%3Ebeaufort%3C/Place%3E%3CPostalCode%3E39190%3C/PostalCode%3E%3C/Address%3E%3C/GeocodeRequest%3E%3C/Request%3E%3C/XLS%3E&output=json&callback=OpenLayers.Protocol.Script.registry.regId2

    Il est tout à fait normal d'avoir l'erreur suivante en passant directement par le navigateur car votre clé est sécurisée par referer (a priori localhost ici) autre que http://wxs.ign.fr...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Exception exceptionCode="MissingRights">Wrong referer</Exception>
    Il y a tout de même des moyens de tester vos requêtes en utilisant des outils comme Poster par exemple, qui permet de "forcer" un referer dans l'entête de la requête.

    Bonne journée

Discussions similaires

  1. [WSS 3.0] Erreur avec les webservices
    Par glucas59 dans le forum Configuration
    Réponses: 2
    Dernier message: 17/08/2011, 15h59
  2. Requete oracle fonctionne sous toad mais renvoie une erreur via les dataset
    Par tatayet_le_felee dans le forum Accès aux données
    Réponses: 4
    Dernier message: 31/08/2010, 17h45
  3. Où remonter les omissions et erreurs sur les cartes?
    Par Max_B dans le forum IGN API Géoportail
    Réponses: 1
    Dernier message: 18/04/2010, 22h08
  4. Réponses: 2
    Dernier message: 12/03/2009, 12h07
  5. [Message d'erreur] gérer les message d'erreurs
    Par heid dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2004, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo