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

Laravel生产环境AJAX PUT/DELETE请求失效求助

解决Laravel生产环境PUT/DELETE请求返回200但不执行更新/删除的问题

嘿,我之前也碰到过一模一样的情况——开发环境一切正常,生产环境PUT/DELETE看似返回成功,但数据库里根本没变化。结合你的AJAX代码和场景,主要是这几个方向的问题,给你一步步排查解决:

1. 先试试Laravel官方推荐的「方法伪造」(最容易解决)

Laravel本身是依赖表单方法伪造来处理PUT/PATCH/DELETE请求的,因为原生HTML表单只支持GET/POST,而有些生产服务器(比如Nginx)默认会拦截PUT/DELETE这类非标准HTTP方法,哪怕AJAX设置了type: 'PUT',实际请求可能被悄悄转换成了POST,导致路由匹配失败,但服务器返回200。

修改你的PUT和DELETE请求代码,把请求类型改成POST,同时在data里加个_method参数指定真实方法:

修改后的PUT请求代码:

type: 'POST', 
url: '/laravel/project/' + id, 
data: { 
    '_token': $('input[name=_token]').val(), 
    '_method': 'PUT', // 关键:伪造PUT方法
    'project_name': $('#project_name_edit').val(), 
    'category': $('#category_edit').val() 
}

DELETE请求同理:

type: 'POST', 
url: '/laravel/project/' + id, 
data: { 
    '_token': $('input[name=_token]').val(), 
    '_method': 'DELETE' // 伪造DELETE方法
}

这个方法几乎能解决90%的这类问题,因为它绕开了服务器对非标准HTTP方法的限制,完全符合Laravel的路由逻辑。

2. 检查服务器(Nginx/Apache)的请求方法允许规则

如果坚持要用原生PUT/DELETE请求,那得确保服务器允许这些方法:

如果你用Nginx:

打开站点的Nginx配置文件,在server块的location部分添加允许PUT/DELETE的规则:

location / {
    try_files $uri $uri/ /index.php?$query_string;
    # 只允许指定的HTTP方法,避免非法请求
    if ($request_method !~ ^(GET|POST|PUT|DELETE|OPTIONS)$ ) {
        return 405;
    }
}

另外还要确认FastCGI配置里传递了正确的请求方法,确保Laravel能拿到真实的请求类型:

fastcgi_param REQUEST_METHOD $request_method;

修改后记得重启Nginx生效。

如果你用Apache:

检查项目根目录的.htaccess文件,确保包含Laravel默认的重写规则,这样PUT/DELETE请求才能正确转发到index.php:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ index.php [L]
</IfModule>

3. 排查路由和控制器逻辑

先确认你的路由定义是正确的,比如PUT路由应该是:

Route::put('/laravel/project/{id}', [ProjectController::class, 'update']);

或者用更简洁的资源路由:

Route::resource('/laravel/project', ProjectController::class);

然后检查控制器的update/destroy方法,比如有没有先判断项目是否存在(如果ID不存在,可能直接返回200但没执行更新),或者有没有权限验证导致逻辑被跳过。

4. 查看Laravel日志找线索

如果上面的方法都没解决,去生产环境的storage/logs/laravel.log里看看详细日志,有没有路由不匹配、数据库报错、权限不足这类信息——很多时候请求返回200,但实际逻辑里有异常被悄悄捕获了,日志会告诉你真相。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:35:14