В соответствии со спецификацией W3 , XMLHttpRequest
переводит веб-браузер на новое место, когда сервер возвращает полностью перенаправленное сообщение 301/302 и Одинаковая политика происхождения нового запроса выполнено. Однако это не работает в некоторых браузерах, таких как определенные версии Google Chrome.
Для достижения наилучшего кроссбраузерного результата, даже если перенаправленный URL-адрес не соответствует правилам Same Origin Policy , вместо этого вы хотели бы изменить расположение на стороне JavaScript. В конечном итоге вы можете позволить вашему сервлету отправлять статус и желаемый новый URL. Э.Г.
Map<String, Object> map = new HashMap<String, Object>();
map.put("redirect", true);
map.put("location", "http://stackoverflow.com");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
resposne.getWriter().write(new Gson().toJson(map));
(что, кстати, Gson
Google Gson , что облегчает преобразование объектов Java в JSON)
и затем в обработчике обратного вызова Ajax в JS:
if (response.redirect) {
window.location = response.location;
}