我需要根据用户ID向网页A或网页B发送请求,例如一个简单的A / B测试服务。计算发送用户的页面的逻辑全部完成。但是,我正在努力找出实现最终步骤的最佳方法,例如实际的重定向。
重定向必须对客户端不可见,所以如果他们请求/ foo / a但我的应用程序决定他们应该看/ foo / b那么客户端应该仍然认为他们看到/ foo / a内容。用户看到哪个页面的应用程序是一个Spring启动应用程序,我的控制器中有一个“catch all”方法,可以处理任何请求并应用逻辑来计算实际调用的url。理想情况下,我想要的是使用HttpServletRequest确保我拥有所有cookie等,对新路径进行http调用并将结果返回给客户端。
答案 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";
}
}
}