簡體   English   中英

不允許使用Laravel刪除方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM