通过Spring启动应用程序不可见地重定向(到客户端)

时间:2017-07-21 17:20:47

标签: java spring spring-boot

我需要根据用户ID向网页A或网页B发送请求,例如一个简单的A / B测试服务。计算发送用户的页面的逻辑全部完成。但是,我正在努力找出实现最终步骤的最佳方法,例如实际的重定向。

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

1 个答案:

答案 0 :(得分:0)

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

@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";
        }
    }
}