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

Laravel 9中Axios POST请求报405 Method Not Allowed问题求助

解决Laravel 9中Axios POST请求405 Method Not Allowed问题

针对你遇到的新增文章POST请求返回405、但修改请求正常的情况,从代码和操作记录出发,排查方向及解决办法如下:

1. 修正控制器方法名的拼写错误

你的控制器方法定义为regitrarArticulo(缺失字母s),虽然路由已对应该方法名,但非常规拼写易引发缓存清理不彻底或后续维护问题,建议修正为标准拼写:

控制器代码修正:

public function registrarArticulo(Request $request){ // 修正方法名拼写
    // 原有业务逻辑...
}

路由配置同步修正:

Route::post('/registrar-articulo', [PostController::class, 'registrarArticulo'])->middleware('auth')->name('registrar-articulo');

修改后重新清理路由缓存:

php artisan route:clear

2. 移除Axios中手动设置的Content-Type

当使用FormData发送请求时,Axios会自动生成包含边界字符串的multipart/form-data请求头,手动设置反而会丢失边界信息,导致Laravel无法正确解析请求体,进而触发路由匹配失败返回405。

JS代码修正:

axios.post(baseUrl+"/registrar-articulo", formData, {
    headers: { 
        'X-CSRF-TOKEN': window.CSRF_TOKEN
        // 移除手动设置的Content-Type配置
    }
})

3. 检查baseUrl的路径拼接问题

确认baseUrl变量末尾是否带有斜杠/,如果baseUrl为http://your-domain.com/格式,拼接后会生成http://your-domain.com//registrar-articulo这类无效路径,无法匹配正确路由。

可通过两种方式避免:

  • 确保baseUrl末尾不带斜杠,例如http://your-domain.com
  • 用模板字符串处理斜杠问题:
    axios.post(`${baseUrl.replace(/\/$/, '')}/registrar-articulo`, formData, { ... })
    

4. 验证路由是否正确注册

执行以下命令查看当前路由列表,确认/registrar-articulo的POST路由存在且对应正确的控制器方法:

php artisan route:list

若路由未出现,检查web.php是否被正确加载,或是否有全局前缀、分组路由等规则覆盖了该路由。

额外排查点

  • 检查CSRF令牌有效性:确认window.CSRF_TOKEN是否通过meta标签等方式正确获取,避免因令牌无效触发拦截。
  • 查看Laravel日志:打开storage/logs/laravel.log,日志会记录405错误的具体原因(如路由匹配失败细节),帮助快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:35:59