Java 通过Spring引导应用程序进行不可见重定向(到客户端)
我需要根据用户ID(例如简单的a/B测试服务)向a页或B页发送请求。确定将用户发送到哪个页面的逻辑已经完成。然而,我正在努力找出实现最后一步的最佳方法,例如实际重定向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。理想情况下,我
重定向对于客户端来说必须是不可见的,因此如果他们请求/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调用