У меня есть вызов AJAX для моей конечной точки в контроллере Spring.После проверки информации из сообщения POST мой контроллер принимает решение о перенаправлении: переслать запрос в другое место или отправить его обратно на страницу входа.Ответ на сообщение правильный, это 302 с правильно установленным заголовком Location
.Однако, когда страница выполняет вызов перенаправления, она выполняет вызов OPTIONS для URL, а затем вызов GET, который просто возвращает HTML.Отлично, у меня есть HTML, но страница остается на моей странице JSP и никогда не переходит на внешний URL.Как мне управлять этим?
Пример кода Java:
@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) {
servletResponse.setHeader("Location", request.url());
servletResponse.setStatus(302);
}
else {
servletResponse.setHeader("Location", MyConstants.FAILURE_URL);
servletResponse.setStatus(302);
}
}
Вызов JSP Ajax:
$.ajax({
headers: {
'accept': 'application/json',
'content-type': 'application/json'
},
type: "POST",
url: "tokenRedirect",
context:document.body,
contentType:"application/json",
data:JSON.stringify(TokenValidateObject)
});
Поэтому, когда я проверяю свой сетевой трафик, я вижу 302для ответа устанавливается статус, а заголовок Location содержит URL-адрес, который я хочу, но он просто выбирает HTML-код для URL-адреса перенаправления, фактически не переключая представления