7
votes

Pourquoi une requête http.post angularjs $ http.post angularjs

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


7 commentaires

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 () 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?


6 Réponses :


8
votes

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: xxx

Vous devrez peut-être essayer avec "type de contenu" également, je ne suis pas sûr de l'affaire à utiliser.


0 commentaires

1
votes

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: XXX

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.


0 commentaires

0
votes

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.


0 commentaires

7
votes

Ajoutez les en-têtes paramètres sur $ HTTP et tout ira bien. XXX

Pour plus d'informations, cochez angularjs $ http docs


2 commentaires

Merci @olatunde garuba. Son résolu mon problème aussi après tentative de trop de méthodes.


Travaille pour moi aussi.



0
votes

Ceci a fonctionné pour moi xxx


0 commentaires

0
votes

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;
    }


0 commentaires