You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中使用Axios删除数据时出现DELETE 405错误

解决Axios调用Laravel DELETE接口返回405 Method Not Allowed错误

我尝试用Axios删除数据行时,持续收到DELETE 405 (Method Not Allowed)错误,相关代码如下:

后端代码

删除API路由

Route::delete('/vehicles/{id}', [VehiclesController::class, 'destroy']);

控制器代码

public function destroy($id)
{
    $vehicleDelete = Vehicle::findOrFail($id);
    $vehicleDelete->delete();

    return response()->json([
        "status" => true
    ], 200);
}

前端代码

删除按钮

<button class='btn btn-danger' onclick="deleteBtn(${item.id})">Delete</button>

Axios删除函数

const deleteBtn = (id) => {
        axios.delete("api/vehicles/" + id)
        .then(response => {
                console.log(id);
            })
}

已通过console.log确认能获取正确的ID,但仍报错。以下是可行的解决方案:

  • 添加CSRF令牌:Laravel默认启用CSRF保护,DELETE请求必须携带CSRF令牌。

    1. 在页面头部添加meta标签:
    <meta name="csrf-token" content="{{ csrf_token() }}">
    
    1. 全局配置Axios携带令牌(推荐):
    axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').content;
    

    或者在单个请求中携带:

    const deleteBtn = (id) => {
        axios.delete(`api/vehicles/${id}`, {
            headers: {
                'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content
            }
        })
        .then(response => {
            console.log(id);
        })
    }
    
  • 检查路由优先级:确保DELETE路由没有被同路径的GET/POST路由覆盖。执行php artisan route:list查看路由列表,确认/vehicles/{id}的DELETE路由是有效且优先级正确的。

  • 验证请求URL:在浏览器开发者工具的Network面板查看实际请求的URL,确认和路由定义的路径完全匹配,避免出现前缀缺失或路径错误。

  • 服务器配置调整:若使用Apache服务器,需确保允许DELETE方法。在项目根目录的.htaccess中添加:

<Limit GET POST PUT DELETE>
    Allow from all
</Limit>

同时确认mod_rewrite模块已开启,保证Laravel路由规则正常解析。

内容的提问来源于stack exchange,提问作者Raitiko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:01:57