405 请求方法 'GET' 在客户端请求命中 Spring MVC 中的拦截器之前不受支持
405 Request method 'GET' not supported before client request hits Interceptor in Spring MVC
我在我的网络应用程序中设置了 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
错误。
错误:
405 Request method 'GET' not supported
表示您针对 servlet 发出的任何客户端请求都是 GET 请求。问题不在于 servlet。我不知道您使用的是 REST 客户端还是浏览器等,但您需要检查并确保发送到您的 servlet 的请求是 POST
我在我的网络应用程序中设置了 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
错误。
错误:
405 Request method 'GET' not supported
表示您针对 servlet 发出的任何客户端请求都是 GET 请求。问题不在于 servlet。我不知道您使用的是 REST 客户端还是浏览器等,但您需要检查并确保发送到您的 servlet 的请求是 POST