Bonjour à tous,
J'ai actuellement une API Symfony2, et une application AngularJS qui la consomme.
Je rencontre un problème lors de la connexion d'un membre. Le mécanisme est le suivant :
- Le client envoie une requête POST sur la route /api/public/users/connection avec un objet JSON comme données, sous la forme suivante :
{"username":"qzdqzd","password":"qzdqzdc"}
(à terme ce sera bien sûr en HTTPS) - Le serveur vérifie la requête et renvoie soit un code 400 si la connexion a échouée, avec comme données de la réponse un message d'erreur ("This user does not exist." par exemple). Sinon, il renvoie un code 200 avec la clé pour se connecter à l'API, que le client stockera dans une cookie
Je suis confronté à un problème très étrange. J'ai une instance de l'API en local (http://galaxia.local/api) et une autre en ligne (http://api.galaxia-online.com/api). Lorsque j'essaie de me connecter avec un pseudo qui n'existe pas, et que je fais la requête à l'API en local, j'ai bien ce à quoi je m'attends :
Par contre, lorsque je fais la même requête, en changeant dans mon code l'adresse de l'API pour mettre l'API distance, rien ne va plus ! Je reçois bien une erreur 400, mais d'une part il n'y a rien dans le corps de la requête (alors qu'il devrait y avoir le message d'erreur), et d'autre part Firefox m'indique que la requête a été bloquée à cause de la politique CORS :
Vous allez me dire, active CORS ! Alors oui, sauf que quand je teste la requête à l'aide d'un add-on dédié pour Firefox (RESTClient), tout marche parfaitement !
Je suis donc vraiment perplexe par rapport à ce problème, je manque peut-être quelque chose. Si vous avez une idée d'où ça pourrait venir, je me ferai un plaisir de tester ! Merci d'avance.