在我的Spring应用程序中,当调用浏览器时,我有一个为JSP页面提供服务的终结点。这很好。 JSP收集一些信息,并在我的控制器类中调用第二个API来处理已收集的数据。如果由于某种原因数据无效,我将向我创建的登录页面的浏览器发送第二次重定向操作。该流程正在运行,当我检查网络流量时,看到对我的登录页面的OPTIONS调用,然后是获取HTML的第二个调用,但是浏览器停留在我的“请稍候...”初始页面中,而JSP没有切换上下文。控制器的示例为:
@RequestMapping(value = "/token/{token_code}", method = {RequestMethod.GET})
public void validateToken(HttpServletRequest servletRequest, HttpServletResponse servletResponse, @PathVariable String token_code) {
//set some servlet request attributes from incoming packet info
if(isTokenValid(token_code)) {
servletRequest.getRequestDispatcher(MyConstants.JSP_DEVICE_INFO).forward(servletRequest, servletResponse);
}
else {
servletRequest.getRequestDispatcher(MyConstants.FAILURE_URL).forward(servletRequest, servletResponse);
}
}
@RequestMapping(value = "/token/tokenRedirect", method = {RequestMethod.POST},headers = "content-type=application/json",consumes = {MediaType.APPLICATION_JSON_VALUE})
public ModelAndView getSession(HttpServletRequest servletRequest,
HttpServletResponse servletResponse,
@RequestBody TokenValidateRequest request)
{
boolean isValid = verifyCollectedInfo(request);
if(isValid) {
return new ModelAndView("redirect:" + request.url());
}
else {
return new ModelAndView("redirect:" + MyConstants.FAILURE_URL);
}
}
我的JSP从第一个端点提供服务,并使用收集的信息调用第二个端点进行验证。如果信息有误,我应该点击该登录页面,但是就像我说的那样,我是通过GET调用从登录页面获取HTML的,但是没有发生重定向操作。为了安全起见,浏览器是否会停止第二次重定向操作?