Laravel10+Vue3使用FilePond上传文件返回405错误求助
校验路由路径与请求URL一致性
确认Laravel路由是否包含/commercial前缀:检查路由文件中是否将该路由放在Route::prefix('commercial')组内。如果路由实际路径和请求URL不匹配,会导致请求落到错误的路由(甚至不存在的路由),触发405方法不允许错误。修正CSRF令牌获取逻辑
Laravel默认生成的CSRF meta标签name是csrf-token,而非csrf。你的代码中用$('meta[name="csrf"]')无法正确获取令牌,会导致CSRF验证失败,间接引发405或419错误。修改为:request.setRequestHeader('X-CSRF-TOKEN', document.querySelector('meta[name="csrf-token"]').content);或者如果项目依赖jQuery,改成
$('meta[name="csrf-token"]').attr("content")。检查控制器方法有效性
确认CommercialPreContractController中的upload方法存在,且没有错误的请求方法限制。示例正确的控制器方法:public function upload(Request $request) { $request->validate([ 'back_dni' => 'required|image|mimes:jpeg,png|max:2048' ]); if ($request->file('back_dni')->isValid()) { // 执行文件存储逻辑,比如: // $path = $request->back_dni->store('documents'); return response()->json(['message' => 'Upload successful'], 200); } return response()->json(['error' => 'File upload failed'], 400); }排查中间件拦截问题
确保路由被web中间件组包裹(默认路由会自动包含),web中间件负责CSRF验证、会话管理等核心功能。同时检查是否有自定义中间件限制了POST请求或特定路径。查看Laravel错误日志
打开storage/logs/laravel.log,查找对应405错误的详细记录,日志会明确显示请求的方法、路径,以及服务器尝试匹配的路由,能快速定位路径不匹配或方法冲突的问题。测试基础POST请求
用Postman或curl直接发送POST请求到/commercial/uploadDocuments,携带CSRF令牌和测试图片:curl -X POST http://your-domain.com/commercial/uploadDocuments \ -H "X-CSRF-TOKEN: your-csrf-token" \ -F "back_dni=@/path/to/test-image.jpg"如果直接请求也报错,说明问题出在Laravel后端,而非FilePond配置。
内容的提问来源于stack exchange,提问作者scorpions77

