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

Laravel+Vue项目PUT/DELETE请求报404但路由存在求助

解决Laravel+Vue中PUT/DELETE请求404的问题

以下是针对该问题的排查和解决步骤:

1. 确认CSRF令牌是否正确携带

Laravel对非GET请求会强制校验CSRF令牌,Vue项目中需确保请求携带有效令牌:

  • 若使用axios发起请求,需在全局配置中添加请求头:
axios.defaults.headers.common['X-CSRF-TOKEN'] = window.csrfToken;
  • 若为传统表单提交,需添加@csrf和@method指令声明请求类型:
<form action="{{ route('sensor.update', $sensor) }}" method="POST">
    @csrf
    @method('PUT')
    <!-- 表单内容 -->
</form>

2. 检查路由模型绑定有效性

你的PUT/DELETE路由使用了隐式模型绑定{sensor},需确认:

  • Sensor模型的路由键为id(默认配置,若修改过需重置):
// app/Models/Sensor.php
protected $routeKeyName = 'id';
  • 请求URL中的sensor参数是数据库中存在的有效ID,比如/sensor/update/1中的1必须对应真实的传感器记录。模型绑定失败时,Laravel会直接返回404。

3. 验证Vue请求发送方式

浏览器原生不支持PUT/DELETE请求,Laravel通过两种方式识别这类请求:

  • 使用axios直接指定请求方法:
axios.put(`/sensor/update/${sensorId}`, formData)
    .then(res => { /* 处理响应 */ });
  • 若用POST请求,需在请求数据中添加_method字段声明真实请求类型:
axios.post(`/sensor/update/${sensorId}`, {
    _method: 'PUT',
    ...formData
})

4. 修复路由缓存与控制器定义问题

虽然你执行过缓存清理,但仍需注意:

  • 路由缓存仅支持控制器类的完整调用语法,建议将路由中的字符串方法名改为数组形式,避免缓存解析错误:
// 修改路由定义
Route::put('/update/{sensor}', [SensorController::class, 'Update'])->name('sensor.update');
Route::delete('/destroy/{sensor}', [SensorController::class, 'Destroy'])->name('sensor.destroy');
  • 执行php artisan route:clear彻底清除路由缓存后再测试。

5. 检查Web服务器配置

  • Apache环境:确保public/.htaccess文件存在且配置正确,允许PUT/DELETE请求通过:
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
  • Nginx环境:确保配置文件中包含转发规则,将所有请求指向入口文件:
location / {
    try_files $uri $uri/ /index.php?$query_string;
}

6. 排查中间件拦截问题

你的路由绑定了auth:sanctum等中间件,可暂时移除中间件测试请求是否正常。若恢复正常,再排查用户认证、会话有效性等问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:05:34