2016-10-09 3 views
3

Ich lerne AngularJS 1.5.8 + Laravel 5.3.17 + PHP 7 gehostet auf IIS/Windows 10, nach diesem tutorial.DELETE MethodNotAllowedHttpException mit IIS, AngularJS und Laravel

Während eine HTTP-Senden AngularJS $ resource.delete(), um Laravel, erhalte ich eine Fehlermeldung: 405 Method Not Allowed und die folgenden Laravel Fehlermeldung:

enter image description here

php artisan route:list gibt mir die folgenden Routen-Tabelle. Ich erwarte, dass DELETE an time.destroy routet.

enter image description here

Auf IIS, ich habe versucht, PHP zu setzen alle HTTP-Verben ohne Erfolg Handler zu akzeptieren.

enter image description here

IIS Anforderungsfilterung ermöglichen explizit DELETE auch nicht funktioniert.

enter image description here

HTTP GET und PUT Verben funktioniert gut. Wie kann ich das Verb DELETE aktivieren?

Vielen Dank im Voraus!

+0

Haben Sie zufällig eine Middleware, die das HTTP-Verb der Anfrage ändert? – Sina

+0

Wie ich gerade lerne, verwendet das oben erwähnte Tutorial keine Middleware. Also ich glaube, es sind nur die Standardeinstellungen in Laravel, wenn überhaupt. – Jake

+0

Okay, könnten Sie einfach versuchen, die Middleware zu Ihrer 'routes.php' hinzuzufügen, um zu prüfen, ob sie zufällig überschrieben wird? 'Route :: group (['Middleware' => 'web', 'Präfix' => 'api'], function() {...' ** <= there! ** – Sina

Antwort

0

Ich fand den Grund ist, weil ich aus Versehen Id: Null-Wert an Laravel übergeben habe.

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

Die Rückgabe 405 Fehlermeldung ist in der Tat irreführend. Ich frage mich, wie ich dieses Verhalten überschreiben und eine aussagekräftigere Fehlermeldung zurückgeben kann.

Hoffen, das hilft anderen armen Seelen, die richtigen Orte zu sehen, ohne 2 Tage der Suche nach Web-Server-Dokumentation zu verschwenden!

Verwandte Themen