2016-10-09 11 views
3

IIS/Windows 10でホストされているAngularJS 1.5.8 + Laravel 5.3.17 + PHP 7をこのtutorialに従って学習しています。IIS、AngularJS、およびLaravelでMethodNotAllowedHttpExceptionを削除

LaravelにHTTP AngularJS $ resource.delete()を送信している間、私はエラーを取得:405 Method Not AllowedとLaravelのエラーメッセージの下:

enter image description here

php artisan route:listは私に次のルートテーブルを提供します。私は、DELETEが01​​にルーティングされることを期待しています。 IIS上で

enter image description here

、私は無駄にすべてのHTTP動詞を受け入れるようにハンドラにPHPを設定しようとしています。

enter image description here

IIS要求のフィルタリングは、明示的にも機能していないDELETEできるようにします。

enter image description here

HTTP GETやPUT動詞が正常に動作します。 DELETE verbを有効にするにはどうすればよいですか?

ありがとうございます!

+0

おそらく、リクエストのHTTP動詞を変更しているミドルウェアがありますか? – Sina

+0

私はちょうど学んでいるので、上記のチュートリアルではミドルウェアを使用していません。だから私はそれがLaravelのデフォルトであると信じています。 – Jake

+0

さて、あなたは 'routes.php'にミドルウェアを追加して、それが何らかの形で上書きされていないかどうかを確認することができますか? 'Route :: group(['ミドルウェア' => 'ウェブ'、 '接頭辞' => '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エラーメッセージの返品は実際には誤解を招くことです。この動作をどのようにオーバーライドしてより意味のあるエラーメッセージを返すことができるのだろうか。

これは、他の貧しい人々が正しい場所を見て、Webサーバーのドキュメントを2日間浪費しないようにするのに役立ちます。

関連する問題