2017-06-29 8 views
0

Je reçois une erreur 405, faire une demande de localhost, c'est l'erreur complète:

OPTIONS http://www.myurl.com 405 (Method Not Allowed)

XMLHttpRequest cannot load http://www.myurl.com . Response for preflight has invalid HTTP status code 405

Je comprends le problème, mais la bizarrerie est que je reçois ce erreur juste au moment où j'utilise le service angulaire $ http:

var req = { 
    method: 'POST', 
    url: 'http://www.myurl.com', 
    headers: { 
     'Content-Type': 'application/json' 
    }, 
    data: { 
    } 
} 

$http(req) 
    .then(function(res) {}, 
     function(error) {}); 

en utilisant XMLHttpRequest fonctionne parfaitement:

var xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     console.log(xhttp.responseText); 
    } 
}; 
xhttp.open("POST", 'http://www.myurl.com', true); 
xhttp.send(); 

J'ai une extension chrome pour ajouter des en-têtes CORS et ça marche. Je remarque aussi que si je supprime le troisième paramètre dans xhttp.open l'erreur réapparaît.

¿Est-ce que quelqu'un sait la raison? ¿Comment puis-je utiliser les services angulaires sans obtenir l'erreur?

Répondre

0

Vous pouvez écrire comme ceci. Parce que vous n'envoyez aucun paramètre à l'URL. Donc je pense que c'est un bon moyen de le faire. Essayez-le, ça peut marcher pour vous.

$http.post('http://www.myurl.com'). 
success(function(data) { 
    //success Response here 
}); 
0

Vous devez autoriser la méthode OPTIONS côté serveur. Avant chaque requête GET, POST, PUT, DELETE ..., une requête OPTIONS est lancée.

Je vous conseille de désactiver votre "extension chrome pour ajouter CORS", pour avoir la même configuration de vos utilisateurs finaux.