栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot中post请求报405错误排坑

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot中post请求报405错误排坑

记一次排坑过程。

SpringBoot中前端向后端发起post请求,页面提示405错误,方法不被支持。

然后尝试了一下get请求,是完全没问题的。

一开始以为是控制器配置错了,但仔细排查,控制器用的是@RequestMapping(xxx),默认是支持get和post请求的。因此强制指定了post方式,修改为:

@RequestMapping(value = "xxx", method = {RequestMethod.GET,RequestMethod.POST})

然后依然是get请求可以,post报405错误。

之后尝试直接@PostMapping("xxx"),发现依然405。

经过最后排查,发现控制器实际上post方法已经进来了,而报405错误的位置并不是控制器本身问题,而是控制器中最后跳页面的问题:

控制器最后一行:return new ModelAndView("xxx.html");

就是这一行的坑!原因很简单,因为SpringBoot中只允许get方式请求静态资源!所以post方式请求控制器后,以转发形式跳转页面,会保持post方式请求html静态资源,导致405错误!

按照个人理解,这是因为SpringBoot已经默认前后端分离方式处理页面导致的。

解决方案:

1.使用重定向方式跳转静态页面:return new ModelAndView("redirect:xxx.html");

2.配置Web配置类,实现WebMvcConfigure接口,在其中对静态资源的post方法放行。(此方法自行查阅)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988108.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号