2016-10-09 2 views
3

J'apprends AngularJS 1.5.8 + Laravel 5.3.17 + PHP 7 hébergé sur IIS/Windows 10, suivant ce tutorial.SUPPRIMER MethodNotAllowedHttpException avec IIS, AngularJS et Laravel

Lors de l'envoi d'un HTTP AngularJS $ resource.delete() à Laravel, je reçois une erreur: 405 Method Not Allowed et ci-dessous Laravel message d'erreur:

enter image description here

php artisan route:list me donne la table des routes suivantes. Je m'attends à ce que DELETE route vers time.destroy.

enter image description here

Sur IIS, j'ai essayé de mettre PHP gestionnaire pour accepter tous les verbes HTTP sans succès.

enter image description here

IIS filtrage de requête pour permettre explicitement SUPPRIMER aussi ne fonctionne pas.

enter image description here

HTTP GET et PUT verbes fonctionne très bien. Comment puis-je activer le verbe DELETE?

Merci d'avance!

+0

Par hasard, avez-vous un middleware qui change le verbe HTTP de la requête? – Sina

+0

Comme je viens d'apprendre, le tutoriel mentionné ci-dessus n'utilise pas de middleware. Donc, je crois que c'est juste les défauts à Laravel, si quelque chose. – Jake

+0

Très bien, pourriez-vous juste essayer d'ajouter le middleware à votre 'routes.php' pour vérifier s'il est écrasé par hasard? 'Route :: group (['middleware' => 'web', 'prefix' => 'api'], function() {...' ** <= là! ** – Sina

Répondre

0

J'ai trouvé la raison est parce que je passais id: null valeur à Laravel, accidentellement.

var Time = $resource('api/time/:id'); //using angular-resource.js 
Time.delete({id:null}).$promise.then(function(success) { 
    console.log(success); 
}, function (error) { 
    console.log(error); // HTTP error 405, Method Not Allowed 
}); 

Le retour d'erreur 405 est en effet trompeur. Je me demande comment je peux contourner ce comportement et renvoyer un message d'erreur plus significatif.

Espérons que cela aidera d'autres âmes pauvres à regarder les bons endroits sans perdre 2 jours de recherche de documents de serveur web!