Java ищет реферера - PullRequest
       5

Java ищет реферера

1 голос
/ 09 апреля 2010

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

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

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

Ответы [ 2 ]

7 голосов
/ 20 ноября 2012

Передача URL-адреса в качестве параметра запроса может создать проблемы с безопасностью. Powerlord прав, что ПОЛЬЗОВАТЕЛЬ может изменить заголовок реферера. Это позволит пользователю посетить страницу, что он может сделать в любом случае. Если говорить более серьезно, то, следуя URL-адресу, указанному в параметре запроса, злоумышленник может отправить пользователя на страницу по выбору злоумышленника, при этом видимость этой страницы рекомендуется вашим приложением. Таким образом, ответ от BalusC может включить подделку межсайтовых запросов.

2 голосов
/ 09 апреля 2010

Лучший способ - передать его как параметр request . На ссылке или кнопке редактирования просто передайте текущий 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 после завершения действия. Поскольку я не делаю Struts, я не могу привести подробный пример Struts, но вот как вы бы это делали с «простым ванильным» сервлетом, вы должны иметь возможность портировать его на подход Struts:

response.sendRedirect(request.getParameter("from"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...