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 :

OpenLs : Error 403: Forbidden


Sujet :

IGN API Géoportail

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut OpenLs : Error 403: Forbidden
    Bonjour,

    J'essaie d'appeler le service de géocodage OpenLs du géoportail depuis une interface OpenLayers, mais je reçois systématiquement "Error 403: Forbidden".

    Ma clé API est une clé web, donnant accès au service de géocodage depuis une url particulière.

    Lorsque j'utilise cette clé avec l'interface géoportail (en m'inspirant de cet exemple : http://api.ign.fr/tech-docs-js/examp...azetteer4.html), tout fonctionne bien.

    En revanche, lorsque j'essaie de la faire fonctionner en direct avec l'exemple geocodage.html donné dans ce message du forum : http://www.developpez.net/forums/d12...ghlight=openls j'obtiens une erreur 403: Forbidden.

    Après avoir essayé de nombreuses combinaisons sans succès, je me tourne vers la communauté...

    Merci pour votre aide.

    --
    Christophe

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par sigeal Voir le message
    En revanche, lorsque j'essaie de la faire fonctionner en direct avec l'exemple geocodage.html donné dans ce message du forum : http://www.developpez.net/forums/d12...ghlight=openls j'obtiens une erreur 403: Forbidden.
    Bonjour Christophe,

    J'ai testé en local et avec une clé de développement et ça fonctionne très bien pour moi. Je n'ai changé que la clé API qui apparait à 2 endroits de geocodage.html et j'avais un fichier proxy.php à disposition pour relayer les requêtes.

    A priori je ne vois que 2 sources d'erreur : soit votre clé n'a réellement pas les droits pour le service openLS, soit vous n'avez pas utilisé de proxy.

    Sylvain

  3. #3
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Effectivement, le proxy est nécessaire pour cet exemple.

    Autre source possible de dysfonctionnement : le referer. Est-ce que votre clef est bien associée à l'url du site que vous utilisez ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci pour vos réponses rapides !

    En ce qui concerne l'association clé / url / droits OpenLs, je pense avoir tout vérifié (ce que semble confirmer le fait que l'exemple du geoportail, adapté et porté sur mon domaine, fonctionne)...

    Pour ce qui est du proxy, j'ai installé celui qui est fourni avec OpenLayers dans mon dossier /var/cgi-bin (mon serveur est sous Ubuntu), après avoir pris soin d'ajouter l'url du service OpenLs dans la liste des url autorisées, et j'ai modifié la ligne suivante dans geocodage.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
    Enfin le referer apparait bien dans les entêtes sous Firebug...

    Je sèche...

    --
    Christophe

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Après avoir remplacé le proxy.cgi par un proxy.php trouvé sur le net, j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ExceptionReport><Exception exceptionCode="MissingParameter">Resource parameter not found</Exception></ExceptionReport>
    Testé avec Poster sous Firefox, le service fonctionne...

    Peu de progrès donc...

    --
    Christophe

  6. #6
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    As tu des copies d'écran des requêtes en échec avec firebug :

    contenu, url, headers de la requête...

    pour essayer de voir ce qui se passe ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Voici des copies d'écran de firebug (j'ai supprimé les noms de domaine et les IP) :

    - Paramètres :


    - Entêtes :


    - Post :


    -Réponse :


    Merci pour votre aide.

    --
    Christophe

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    J'ai également fait un essai avec php / curl, avec le même résultat (ou plutôt la même absence de résultat) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $xml = '<?xml version="1.0" encoding="UTF-8"?> <XLS xmlns:xls="http://www.opengis.net/xls" xmlns:gml="http://www.opengis.net/gml" xmlns="http://www.opengis.net/xls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="http://www.opengis.net/xls
    http://schemas.opengis.net/ols/1.2/olsAll.xsd"><RequestHeader srsName="epsg:4326"/><Request requestID="1" version="1.2" methodName="LocationUtilityService" maximumResponses=""><GeocodeRequest returnFreeForm="false"><Address countryCode="StreetAddress"><freeFormAddress>1 rue Marconi 57000 Metz</freeFormAddress></Address></GeocodeRequest></Request></XLS>';
    				  
    // Envoi du XML via CURL / POST en text/xml.
    $ch = curl_init('http://gpp3-wxs.ign.fr/' . $api_key . '/geoportail/ols?');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 'referer: http://xxxxxxxxxxxxxxxx/test_ols_ign.php'));
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, htmlspecialchars($xml, ENT_QUOTES));
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt($ch, CURLOPT_REFERER, 'http://xxxxxxxxxxxxxxxx/test_ols_ign.php');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $ch_result = curl_exec($ch);
    curl_close($ch);
    
    // Print CURL result
    echo $ch_result;
    La réponse est la même : MissingParameter / Resource parameter not found.

    @ suivre,

    --
    Christophe

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Le proxy que tu as trouvé pose problème.

    Pour avoir le xml qui est soumis ça marche avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $request_params = trim(file_get_contents('php://input'));
    et non pas en récupérant $_POST (qui est vide) comme c'est ce que fait le script actuel.

    Ensuite la requête CURL il faut bien qu'il y est Content-type: text/xml (ou application/xml) et le Referer.

    Pour le postfields, essaye sans le htmlspecialchars().

    En gros avec ça, ça marche pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $request_url = urldecode( $_REQUEST['url'] );
    $request_params = trim(file_get_contents('php://input'));
    ...
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $request_url);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 'Referer: http://localhost/'));
    curl_setopt( $ch, CURLOPT_POST, 1 );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $request_params );
    $response = curl_exec( $ch );
    ...
    Faire juste suivre les headers comme fait le proxy que tu utilise ne fonctionne pas parce qu'il manque le header 'Content-type'. Et s'il n'est pas là ça donne un 'Resource parameter not found'.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup Sylvain !

    Je ne suis pas sûr d'avoir compris toutes les finesses mais ça fonctionne en php / curl avec tes suggestions.

    Il me reste à peaufiner tout ça et à ajouter l'autocomplétion.

Discussions similaires

  1. [Exchange 2007] pfdavadmin error 403 forbidden
    Par yegyeg dans le forum Exchange Server
    Réponses: 0
    Dernier message: 17/12/2014, 11h28
  2. public_html error 403
    Par KeKeMaN dans le forum Apache
    Réponses: 2
    Dernier message: 12/04/2007, 12h49
  3. [Apache] - 1.3 - 403 Forbidden
    Par EvilAngel dans le forum Apache
    Réponses: 3
    Dernier message: 29/03/2006, 17h16
  4. Erreur 403 Forbidden
    Par cybernetique dans le forum Apache
    Réponses: 7
    Dernier message: 13/04/2005, 14h25
  5. phpMyAdmin error 403
    Par quadra38 dans le forum Apache
    Réponses: 12
    Dernier message: 17/03/2005, 10h39

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