XMLHttpRequest interdit

Discussions autour des WebServices WMS / WFS / WPS de la CUB
Répondre
ivan
Messages : 11
Enregistré le : 14 octobre 2015, 12:47

XMLHttpRequest interdit

Message par ivan »

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 ... =[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
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
Messages : 352
Enregistré le : 23 juin 2011, 16:16

Re: XMLHttpRequest interdit

Message par Sébastien Cart-Lamy »

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/1708 ... gin-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 ;))
ivan
Messages : 11
Enregistré le : 14 octobre 2015, 12:47

Re: XMLHttpRequest interdit

Message par ivan »

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
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
Messages : 352
Enregistré le : 23 juin 2011, 16:16

Re: XMLHttpRequest interdit

Message par Sébastien Cart-Lamy »

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.
ivan
Messages : 11
Enregistré le : 14 octobre 2015, 12:47

Re: XMLHttpRequest interdit

Message par ivan »

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
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
Messages : 352
Enregistré le : 23 juin 2011, 16:16

Re: XMLHttpRequest interdit

Message par Sébastien Cart-Lamy »

Pouvez-vous réessayer ?
ivan
Messages : 11
Enregistré le : 14 octobre 2015, 12:47

Re: XMLHttpRequest interdit

Message par ivan »

Bonjour,

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

Merci beaucoup !

-i
ivan
Messages : 11
Enregistré le : 14 octobre 2015, 12:47

Re: XMLHttpRequest interdit

Message par ivan »

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
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
Messages : 352
Enregistré le : 23 juin 2011, 16:16

Re: XMLHttpRequest interdit

Message par Sébastien Cart-Lamy »

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.
ivan
Messages : 11
Enregistré le : 14 octobre 2015, 12:47

Re: XMLHttpRequest interdit

Message par ivan »

ah ok.

oui je confirme que ca marche maintenant.

merci beaucoup !

-i
Répondre