【问题标题】:Laravel delete method not allowed不允许 Laravel 删除方法
【发布时间】:2019-04-07 07:36:30
【问题描述】:

我正在编写一个 laravel api,当我尝试进行删除和发布请求时,我不断收到方法不允许的异常。我应该在哪里寻找诊断这个问题?

我已阅读有关此问题的大多数其他帖子,这是我尝试/查看的内容。 • 确保路由语法正确

• 确保它没有与其他路线冲突

• 确保我使用了正确的路由(运行 php artisan route:list to 仔细检查)

• 修改了 .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() 来解决此问题并实现相同的功能,但这似乎不是标准做法。

【问题讨论】:

标签: php laravel


【解决方案1】:

您必须设置 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
    })
});

【讨论】:

  • 这仅在您使用 HTML 表单时相关,因为 HTML 表单不支持 DELETE 方法类型。当通过适当的客户端使用 API 时,您可以使用任何 HTTP 方法。
猜你喜欢
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 2015-05-13
  • 2021-09-23
  • 2014-06-21
  • 1970-01-01
相关资源
最近更新 更多