调用store方法时提示仅支持DELETE请求的问题排查
问题原因及解决办法
核心原因:请求方法被伪造为DELETE,或请求路径错误导致路由匹配异常
你遇到的问题大概率是以下两种情况之一,导致Laravel误将你的POST提交判定为删除操作:
排查1:表单残留伪造DELETE请求的隐藏字段
打开页面源码,检查是否存在类似代码:<input type="hidden" name="_method" value="DELETE">Laravel通过这个字段实现HTTP请求方法伪造,只要存在该字段,哪怕用POST提交表单,框架也会按照DELETE方法处理请求。这种情况通常是之前删除表单的代码残留,或是复用了带该字段的组件导致的。
排查2:请求路径或路由调用错误
- 执行
php artisan route:list查看路由列表,确认categories.store对应POST /categories,categories.destroy对应DELETE /categories/{category}; - 打开浏览器开发者工具(F12),提交表单时查看网络请求:
- 如果请求方法显示为DELETE,直接对应上面的
_method字段问题; - 如果请求URL是
/categories/{某个ID}而非/categories,说明你误将表单指向了单条分类的路径,此时DELETE请求会命中destroy路由,移除destroy后自然出现404。
- 如果请求方法显示为DELETE,直接对应上面的
- 执行
修正方案
移除多余的_method隐藏字段,同时确保Inertia表单调用的路由正确,也可以直接传入生成的URL避免歧义:<form @submit.prevent="form.post(route('categories.store'))">
内容的提问来源于stack exchange,提问作者maganthro
相关产品推荐
相关产品推荐

