【发布时间】:2017-01-10 16:11:45
【问题描述】:
我正在使用 Spring Boot 实现(某种)负载平衡 HandlerInterceptor。
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String uri = request.getRequestURI();
if (shouldUseServer1(uri)) {
response.sendRedirect(server1Uri);
} else {
response.sendRedirect(server2Uri);
}
}
我们的想法是,基于 url,我们要么重定向到一个服务,要么重定向到另一个服务。该应用程序没有任何明确的RequestMappings(目前)。
现在的问题是,当调用拦截器时,请求被重定向到默认的 Spring 错误处理程序。因此,HttpServletRequest 中存储的 URI 被 /error 替换(有效地拒绝了对原始 URI 的访问)。
有没有办法在请求被重新路由到错误处理程序(或获取原始 uri)之前拦截请求?
【问题讨论】:
标签: java spring spring-mvc spring-boot