Postman选POST请求却提示GET方法不支持Laravel8路由问题
问题原因及解决方案
核心常见原因
最容易触发该问题的场景是URL末尾斜杠触发重定向,自动转换了请求方法:Laravel 自带的 .htaccess 重写规则默认会把末尾带斜杠的 URL 301 重定向到无斜杠的地址(反之亦然),而重定向请求会默认从 POST 转为 GET,哪怕你在 Postman 里选的是 POST 方法,重定向后的请求也会变成 GET,就会触发「路由不支持GET方法」的报错。
其他可能原因
- 路由路径不匹配:你请求的路径和实际定义的路由存在拼写误差,或者遗漏了路由分组前缀,导致请求落到了其他不匹配的路由规则上
- 中间件触发重定向:如果该路由绑定了 auth、权限校验类中间件,当校验不通过时(比如未携带有效身份凭证、session 失效),中间件会默认重定向到登录页、首页等 GET 路由,也会触发该报错
- Postman 自动重定向配置:Postman 默认开启自动跟随重定向,你看不到中间的 301/302 跳转过程,会误以为原 POST 请求直接返回了方法不支持的错误
排查修复步骤
- 核对 Postman 里的请求 URL 和路由定义完全一致,不要多写/少写末尾斜杠,也不要遗漏路由前缀
- 执行
php artisan route:list命令,确认你定义的post-routePOST 路由确实存在,且没有和其他路由冲突 - 关闭 Postman 设置里的「Automatically follow redirects」选项,重新发起请求,如果返回 301/302 状态码,即可确认是重定向导致的问题,调整 URL 格式即可
- 检查路由绑定的中间件,如果是接口类请求不需要 session 校验,记得移除 web 中间件组,改用 api 中间件组,避免身份校验触发不必要的重定向
- 额外修正:你提交的 JSON 格式不符合标准,所有字符串需要用双引号包裹,修改为:
{ "id1": 1234, "id2": 4321 }
内容的提问来源于stack exchange,提问作者James Haskell
相关产品推荐
相关产品推荐

