2016-10-09 6 views
3

Я изучаю AngularJS 1.5.8 + Laravel 5.3.17 + PHP 7, размещенный в IIS/Windows 10, после этого tutorial.DELETE MethodNotAllowedHttpException с IIS, AngularJS и Laravel

при отправке HTTP AngularJS $ resource.delete() для Laravel, я получаю сообщение об ошибке: 405 Method Not Allowed и ниже Laravel сообщение об ошибке:

enter image description here

php artisan route:list дает мне следующую таблицу маршрутов. Я ожидаю, что DELETE направится к time.destroy.

enter image description here

В IIS, я попытался установить PHP для обработчика, чтобы принять все HTTP глаголы но безрезультатно.

enter image description here

IIS фильтрации запросов явно разрешить УДАЛИТЬ также не работает.

enter image description here

HTTP GET и PUT глаголы работает отлично. Как включить DELETE-глагол?

Заранее благодарен!

+0

Возможно, у вас есть промежуточное программное обеспечение, которое меняет HTTP-глагол запроса? – Sina

+0

Как я только что узнал, вышеупомянутый учебник не использует промежуточное ПО. Поэтому я считаю, что это только дефолты в Laravel, если что-нибудь. – Jake

+0

Хорошо, не могли бы вы просто попытаться добавить промежуточное ПО к вашему 'routes.php', чтобы проверить, не перезаписывается ли он случайно? 'Route :: group (['middleware' => 'web', 'prefix' => 'api'], function() {...' ** <= there! ** – Sina

ответ

0

Я нашел причину, потому что я проходил мимо id: null значение для Laravel, случайно.

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

Сообщение об ошибке сообщения 405 действительно вводит в заблуждение. Интересно, как я могу переопределить это поведение и вернуть более значимое сообщение об ошибке.

Надеюсь, что это поможет другим бедным душам посмотреть на правильные места, не тратя впустую 2 дня поиска документов в веб-сервере!