Java 通过Spring引导应用程序进行不可见重定向(到客户端)

Java 通过Spring引导应用程序进行不可见重定向(到客户端),java,spring,spring-boot,Java,Spring,Spring Boot,我需要根据用户ID(例如简单的a/B测试服务)向a页或B页发送请求。确定将用户发送到哪个页面的逻辑已经完成。然而,我正在努力找出实现最后一步的最佳方法,例如实际重定向 重定向对于客户端来说必须是不可见的,因此如果他们请求/foo/a,但我的应用程序决定他们应该看到/foo/b,那么客户端应该仍然认为他们看到了/foo/a内容。确定用户看到哪个页面的应用程序是一个Spring引导应用程序,我的控制器中有一个“catch all”方法,可以处理任何请求并应用逻辑来确定实际调用的url。理想情况下,我

我需要根据用户ID(例如简单的a/B测试服务)向a页或B页发送请求。确定将用户发送到哪个页面的逻辑已经完成。然而,我正在努力找出实现最后一步的最佳方法,例如实际重定向


重定向对于客户端来说必须是不可见的,因此如果他们请求/foo/a,但我的应用程序决定他们应该看到/foo/b,那么客户端应该仍然认为他们看到了/foo/a内容。确定用户看到哪个页面的应用程序是一个Spring引导应用程序,我的控制器中有一个“catch all”方法,可以处理任何请求并应用逻辑来确定实际调用的url。理想情况下,我希望使用HttpServletRequest来确保我拥有所有cookies等,对新路径进行http调用,并将结果返回给客户端。

您描述的一个简单示例如下所示:

@Controller
public class ABController {

    //Catch All GET Requests
    @GetMapping("/**")
    public String getPage(HttpServletRequest request) {

        //Access the Spring Security Context (if you're using this).
        String username = SecurityContextHolder.getContext().getAuthentication().getName();

        //Access the HttpServletRequest
        Cookie[] cookies = request.getCookies();

        //Perform some decision logic for select the appropriate web page to return
        if(username.equals("someUser")) {
            return "b";
        } else {
            return "a";
        }
    }
}
看看这个:它似乎在Spring Boot中代理HTTP调用