![](/img/trans.png)
[英]delete method not allowed and returning MethodNotAllowedHttpException in Laravel 5
[英]Laravel delete method not allowed
我正在寫一個laravel api,當我嘗試刪除和發布請求時,我不斷獲得一個方法不允許異常。 我應該在哪里尋找診斷這個問題?
我已經閱讀了關於這個問題的大多數其他帖子,這里是我試過/看過的內容。 •確保路由語法正確
•確保它與其他路線不沖突
•確保我使用的是正確的路線(運行php artisan route:list to double check)
•修改.htaccess文件夾(也許我做錯了)允許GET,POST,PUT,DELETE
以下是api.php中的路徑
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::delete('delete/{id}', 'LoginController@delete');
Route::get('stuff', 'LoginController@index');
Route::get('stuff1/{Username}', 'LoginController@show');
這是控制器中的功能
public function delete(Request $request, $id) {
$user = Login::find($id);
$user->delete();
return "204";
}
這是我的.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
<Limit GET POST PUT DELETE>
Allow from all
</Limit>
</IfModule>
我可以通過將Route :: delete()更改為Route :: get()並實現相同的功能來解決此問題,但這似乎不是標准做法。
您必須設置ajax類型POST,但發送一個名為_method的參數,其值為delete,如下所示:
$.ajax({
type: "POST",
data:{
_method:"DELETE"
},
url: productRoute,
headers: { 'X-CSRF-TOKEN' : productToken }
});
或者因為你使用laravel html表單助手,所以它自動生成_method隱藏輸入,所以你最好發送所有表單輸入,如令牌和方法,如下所示:
function()
{
var formData=$('#yourForm').serialize();
$.ajax({
type: "POST",
url: productRoute,
data:formData
})
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.