XMLHttpRequest interdit

Discussions autour des WebServices WMS / WFS / WPS de la CUB

XMLHttpRequest interdit

Messagepar ivan » 14 Octobre 2015, 13:52

Bonjour,

Je suis en train écrire un site-web qui appelle le serveur WFS pour chercher les arrêts bus proche de l'utilisateur. Donc c'est un requête AJAX, fait a partir de mon app (fait en Angular JS).

Le réponse(/error) donné par mon browser est:

XMLHttpRequest cannot load http://data.bordeaux-metropole.fr/wfs?R ... 1.1.0&key=[VOTRECLE]. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.0.104' is therefore not allowed access.

Donc ca me semble que vous devrait ajouter le header:
Access-Control-Allow-Origin: *
dans votre configuration apache/ngix/tomcat pour permettre les appelles vers cette URL depuis un app hébergé sur un autre URL.

Est-ce que vous pouvez confirmer cette 'bug' de configuration, ou sinon le moyen de connecter depuis AJAX. L'option 'JSONP' n'est pas un option car c'est XML, pas JSON.

Merci,

-ivan
ivan
 
Messages: 11
Inscrit le: 14 Octobre 2015, 13:47

Re: XMLHttpRequest interdit

Messagepar Sébastien Cart-Lamy » 14 Octobre 2015, 14:35

Bonjour,
Je pense que le problème vient du navigateur, qui interdit le cross-domain. C'est dans la norme HTTP : les requêtes AJAX sur un domaine différent de la page sont interdits.
Rajouter des infos Access-Control-Allow-Origin: * ne changera rien.

Vous pouvez tester que c'est bien le navigateur qui bloque en désactivant la règle same-origin-policy (exemple avec firefox : http://stackoverflow.com/questions/17088609/disable-firefox-same-origin-policy)

Par contre, on peut charger des scripts javascript, des CSS ou des iframe d'autres domaines.

Un solution peut être d'utiliser un proxy PHP sur votre serveur - c'est ce que fait notre API CUB (et elle utilise du JSONP ;))
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
 
Messages: 268
Inscrit le: 23 Juin 2011, 17:16

Re: XMLHttpRequest interdit

Messagepar ivan » 14 Octobre 2015, 14:51

Merci pour votre réponse rapide,

C'est vrai que on peut faire un reverse proxy chez nous qui vas faire l'appelle et donc vas faire pensé le browser que les donnes sont 'locale', mais c'est un hack qui n'est pas nécessaire. Tous le monde qui utilise votre service vont être obligé de faire ca, mais si vous ajouter le header dans votre réponse ca vas n'être plus néccessaire.

Faites le meme requête vers l'API Toulouse:

http://api.tisseo.fr/v1/stop_points.jso ... Distance=1

Vous allez voir le header bien mis et donc les donnes accessible par AJAX sans proxy. Le 'norme' dont vous parlez est seulement appliqué quand le header n'est pas présente.

Access-Control-Allow-Headers:Access-Control-Request-Headers, Authorization
Access-Control-Allow-Origin:http://192.168.0.104

En suppriment le header vous n'êtres pas plus protégé que si c'est inclus, c'est juste plus chient pour nous, les utilisateurs !

j'espère que c'est clair avec ma mauvais francais...

-i
ivan
 
Messages: 11
Inscrit le: 14 Octobre 2015, 13:47

Re: XMLHttpRequest interdit

Messagepar Sébastien Cart-Lamy » 14 Octobre 2015, 15:28

Bonjour,
Apparemment, cela n'a pas posé tant de problème que cela aux autres utilisateurs depuis l'ouverture il y a 4 ans. Beaucoup d'applications n'utilisent pas de navigateur et n'ont pas ce problème là.

Je regarde ce que je peux faire.
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
 
Messages: 268
Inscrit le: 23 Juin 2011, 17:16

Re: XMLHttpRequest interdit

Messagepar ivan » 14 Octobre 2015, 15:57

Bonjour,

Oui c'est surement un 'problème' liée au communications direct entre le navigateur et le WFS, donc appelles fait par python/php/apache etc n'ont pas le soucis. On peux faire le proxy work-around mais je préfère pas, c'est tout.

Merci de me tenir au courant si on as besoin d'attendre ou implementer le proxy.

cdt,

-ivan
ivan
 
Messages: 11
Inscrit le: 14 Octobre 2015, 13:47

Re: XMLHttpRequest interdit

Messagepar Sébastien Cart-Lamy » 15 Octobre 2015, 09:59

Pouvez-vous réessayer ?
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
 
Messages: 268
Inscrit le: 23 Juin 2011, 17:16

Re: XMLHttpRequest interdit

Messagepar ivan » 19 Octobre 2015, 11:20

Bonjour,

Oui j'ai re-testé et ca marche nickel.

Merci beaucoup !

-i
ivan
 
Messages: 11
Inscrit le: 14 Octobre 2015, 13:47

Re: XMLHttpRequest interdit

Messagepar ivan » 20 Octobre 2015, 15:11

oops, maintenant il y a un autre soucis, cette fois pour le server WPS.. en fait il y a deux headers: Access-Control-Allow-Origin, et donc j'ai l'erreur:

The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed. Origin 'http://localhost' is therefore not allowed access.

donc je pense il faut juste 1 instance du header... (un peut nul je sais)

-ivan
ivan
 
Messages: 11
Inscrit le: 14 Octobre 2015, 13:47

Re: XMLHttpRequest interdit

Messagepar Sébastien Cart-Lamy » 20 Octobre 2015, 15:41

Oui effectivement.

Je viens de me rendre compte que j'avais bien déjà activé il y a un moment le cross domain pour le WPS directement dans le service.

Et le fait de l'ajouter au niveau du serveur web pour tous les webservices, faisait un double header.

Problème résolu.
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
 
Messages: 268
Inscrit le: 23 Juin 2011, 17:16

Re: XMLHttpRequest interdit

Messagepar ivan » 20 Octobre 2015, 16:32

ah ok.

oui je confirme que ca marche maintenant.

merci beaucoup !

-i
ivan
 
Messages: 11
Inscrit le: 14 Octobre 2015, 13:47


Retour vers WebServices

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron