J'essaie d'exercer l'API Trello avec une clé d'application et un jeton d'une webApp angulaire (version 1.0.5). Le serveur semble correctement configuré pour gérer Cors . Une demande de test avec http://test-cors.org de Activer Cors fonctionne comme prévu.
Lorsque je fais une demande postale dans l'un de mes contrôleurs angulaires: P>
Request Method:OPTIONS Status Code:200 OK Accept:*/* Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Access-Control-Request-Headers:accept, origin, content-type Access-Control-Request-Method:POST Connection:keep-alive Host:api.trello.com Origin:http://192.168.0.125:9000 Referer:http://192.168.0.125:9000/ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22 Response Access-Control-Allow-Methods:GET, PUT, POST, DELETE Access-Control-Allow-Origin:* Content-Length:0 Content-Type:text/html; charset=utf-8 Date:Mon, 18 Mar 2013 02:51:00 GMT X-Powered-By:Express
6 Réponses :
L'en-tête "Type de contenu" n'est pas accepté par le serveur et est ajouté par défaut pour la demande de post HTTP angular $ http (voir $ http doc ). Vous pouvez essayer de le supprimer de votre configuration HTTP $. Inject $ httpProvider dans votre contrôleur, alors cela pourrait fonctionner: Vous devrez peut-être essayer avec "type de contenu" également, je ne suis pas sûr de l'affaire à utiliser. P > p>
selon cette angulaire Demande de traction , Cors peut être effectué pour fonctionner par Suppression de la demande X-AVEC qui provoque une demande d'options de pré-vol: Notez que je n'ai pas essayé personnellement, mais un collègue a dû supprimer l'en-tête pour que sa demande de CORS travail. p> p>
Je viens de courir dans un problème similaire et que le problème était que je me trompe l'URL. Je postais à 1 / cartes / actions / Createcard parce que je manquai les docs. J'ai eu une erreur liée à la lutte contre l'accès, même si les en-têtes, etc., donnez à droite. L'affichage à 1 / cartes a créé une carte, ce que je voulais. P>
Ajoutez les en-têtes paramètres sur $ HTTP et tout ira bien. Pour plus d'informations, cochez angularjs $ http docs p> p>
Merci @olatunde garuba. Son résolu mon problème aussi après tentative de trop de méthodes.
Travaille pour moi aussi.
Ceci a fonctionné pour moi
Pour éviter ce problème, créez une fonction du côté serveur pour attraper les «options» et simplement revenir. Quelque chose comme suit.
/** * @url OPTIONS / */ public function options() { return; }
En effet, la réponse provient d'un autre domaine et ils ont leurs propres règles dans les demandes de service d'autres domaines.
Vous pouvez essayer
$ http.jsonp () code> pour obtenir la réponse d'un autre domaine
@Abrofrash comme je veux faire un message, JSONP n'est pas une option (que je me rappelle est uniquement pour obtenir des demandes).
Je ne suis pas aussi familier avec Cors que je voudrais, mais je remarque que votre réponse angulaire (préférez-vous?) Définit les types de contenu admissibles: "Texte / HTML; Charset = UTF-8". Votre réponse XHR renvoie le type de contenu: "Application / JSON". Cela me semble que le problème n'est pas des Cors, mais une inadéquation de type de données.
David, avez-vous trouvé une solution pour cela? Je cherche toujours une réponse à ce problème :(
@PNCT, j'ai enfin créé un proxy sur mon serveur pour surmonter cela. Avez-vous essayé la réponse de Flokagale de supprimer le type de contenu? (J'avais frappé avec ça sans conclusions précises)
Oui, toujours ne fonctionne toujours pas. Quelle est la solution avec proxy?