2016-10-09 29 views
3

我正在學習在IIS/Windows 10上託管的AngularJS 1.5.8 + Laravel 5.3.17 + PHP 7,在此之後tutorial使用IIS,AngularJS和Laravel刪除MethodNotAllowedHttpException

當發送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天的搜索網絡服務器文檔!

相關問題