2010-04-09 2 views
1

Я использую Struts и Java. Проблема в том, что у меня есть страница с некоторыми результатами. Пользователь может щелкнуть элемент и отредактировать его. Я хочу, чтобы после редактирования пользователь смог вернуться к результатам. Назад не сломана, но если он представит форму для обновления, ему придется дважды щелкнуть назад, я думаю, и может возникнуть проблема.Java ищет реферала

Я пробовал header("Referer"), но это не работает в Internet Explorer.

Я пытаюсь реализовать решение. Есть идеи? Моя идея - сохранить URL-адрес и изменить идентификатор этого URL-адреса. И когда я хочу вернуться, получите URL-адрес от ID. Хранение его в сеансе не является решением, поскольку пользователь может открыть несколько окон.

+0

'HTTP_REFERER' - это пользовательский заголовок. Это может быть правильно, но пользователь, возможно, изменил его. Это довольно легко сделать в Firefox, где есть аддон Refcontrol: https://addons.mozilla.org/en-US/firefox/addon/953 – Powerlord

+0

Можете ли вы восстановить URI результатов из объектов, доступных при редактировании элемента? – Matt

ответ

2

Лучший способ - передать его в качестве запроса . На ссылке редактирования или кнопке просто передайте текущий URL-адрес в качестве параметра запроса. Вот пример со ссылкой:

<a href="/login?from=${pageContext.request.requestURI}">edit</a> 

Или если это кнопка отправки формы, то скорее передать его в качестве скрытого значения ввода в той же форме:

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

На странице с форма редактирования, перенести его на последующий запрос в качестве входного значения скрытой формы:

<input type="hidden" name="from" value="${param.from}"> 

в способе действия, просто перенаправить на этот URL после Finiš hing действие. Поскольку я не делаю Struts, я не могу привести подробный пример Struts, но вот как вы это сделаете с помощью «простой ванили» Servlet, вы должны будете перенести его на подход Struts:

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

Кажется, все в порядке ... Но я боюсь, если строка запроса слишком велика! – GorillaApe

7

Передача URL-адреса в качестве параметра запроса может привести к проблемам безопасности. Powerlord прав, что пользователь может изменить заголовок реферера. Это позволит пользователю посещать страницу, что-то, что они могут сделать в любом случае. Более серьезно, следуя URL-адресу, который находится в параметре запроса, он позволяет злоумышленнику отправить пользователя на страницу выбора злоумышленника, причем внешний вид этой страницы рекомендуется вашим приложением. Таким образом, ответ BalusC может включить Cross-Site Request Forgery.

Смежные вопросы