request.getHeader(referer), кнопка «Назад» перезагрузит страницу

JSP1 ссылается на JSP2.

JSP2 вызывает сервлет, который делает некоторые вещи и заканчивается:

response.sendRedirect(request.getHeader("referer"));
return;

На данный момент я вернулся к JSP2. Проблема в том, что при нажатии кнопки «Назад» в браузере страница просто перезагружается, а не возвращается к JSP1. Это правильно, потому что sendRedirect добавляет запись в историю.

Но я хочу вернуться к JSP1. Какие-нибудь советы?


person Simone Conti    schedule 28.05.2012    source источник
comment
как насчет ‹script›history.go(-1);‹/script› ?   -  person ante.sabo    schedule 02.11.2012


Ответы (1)


Вы вообще не должны полагаться на заголовок реферера в действиях контроллера по разным деликатным причинам. Вы уже узнали по крайней мере один. Этот заголовок не всегда отправляется клиентом, или его значение может не соответствовать реальному рефереру. Некоторые настройки браузера, прокси и даже антивируса могут скрывать, изменять или даже запутывать заголовок реферера. Используйте его максимально для статистических целей.

Вместо этого передайте from в качестве параметра запроса,

<input type="hidden" name="from" value="${pageContext.request.requestURI}" />

с этой логикой (проверка опущена)

response.sendRedirect(request.getParameter("from"));

Или, лучше, если это всегда один и тот же JSP на основе других параметров запроса, просто хардкодите/настройте его полностью на стороне сервера.

person BalusC    schedule 29.05.2012