405 在客户端请求命中 Spring MVC 中的拦截器之前不支持请求方法“GET”
Posted
技术标签:
【中文标题】405 在客户端请求命中 Spring MVC 中的拦截器之前不支持请求方法“GET”【英文标题】:405 Request method 'GET' not supported before client request hits Interceptor in Spring MVC 【发布时间】:2017-05-29 08:42:55 【问题描述】:我在我的网络应用程序中设置了Interceptor
。它工作正常,我看到它被所有请求调用,除了一种只接受POST
请求的方法。似乎 Spring 对所有控制器方法都有映射,以及将哪些请求方法(如 GET
或 POST
)映射到每个控制器方法。在调用Interceptor
之前,它会查看哪个请求方法映射到哪个控制器方法,如果没有找到,它会抛出'405 Request method 'GET' not supported`错误。所以我想知道,我该如何解决?
为了清楚起见,假设我的控制器中有两种方法。
@Controller
public class myController
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test1()
return "abc";
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String test1()
return "xyz";
这是我的Interceptor
:
public class URLInterceptors extends HandlerInterceptorAdapter
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
System.out.println("REQUESTED SERVLET PATH IS: " + request.getServletPath());
return true;
而且配置也没有问题:
public class RootContextConfiguration extends WebMvcConfigurerAdapter
@Bean
public URLInterceptors urlInterceptors()
return new URLInterceptors();
@Override
public void addInterceptors(InterceptorRegistry registry)
registry.addInterceptor(this.urlInterceptors());
....
然后,每当对"/test"
发出请求时,我的Interceptor
就会被完美调用。但是每当向"/login"
发出请求时,我的Interceptor
永远不会被调用。相反,我看到了 405 Request method 'GET' not supported
错误。
【问题讨论】:
将RequestMethod.POST
更改为GET
for /login
?
@ArsenDavtyan 大声笑没有。有更好的方法来处理这个问题。如果我的登录页面收到表单怎么办?那我肯定需要 POST。
问题是如果你得到405 Request method 'GET' not supported
为/login
,这意味着你在客户端使用GET
,而不是POST
【参考方案1】:
错误:
405 Request method 'GET' not supported
表示您对 servlet 发出的任何客户端请求都是 GET 请求。问题不在于 servlet。我不知道您使用的是 REST 客户端还是浏览器等,但您需要检查并确保发送到您的 servlet 的请求是 POST
【讨论】:
以上是关于405 在客户端请求命中 Spring MVC 中的拦截器之前不支持请求方法“GET”的主要内容,如果未能解决你的问题,请参考以下文章
405 - 请求方法“POST”不支持 Spring MVC + Spring Security
Spring MVC HTTP 状态 405 - 不支持请求方法“POST”
HTTP 状态 405 - 不支持请求方法“POST”(Spring MVC)
Spring MVC PUT 请求返回 405 Method Not Allowed
不支持 Spring MVC 请求方法“POST”-> HTTP 405
jsp spring mvc 上传时HTTP Status 405 - Request method 'GET' not supported是啥原因