Альтернатива заголовку "Referer" - PullRequest
8 голосов
/ 23 августа 2010

Я использовал код "request.getHeader (" Referer ");" Казалось, код работает нормально. Но недавно я узнал, что он не работает в IE. IE выбрасывал ноль. Теперь я не знаю, как идти вперед. Есть ли альтернатива заголовку "Referer", который может получить предыдущую ссылку и корректно работать во всех браузерах? Установка пользовательского заголовка из предыдущей ссылки не является приемлемым вариантом для меня. Так что, пожалуйста, помогите мне с этим. Спасибо.

Ответы [ 2 ]

10 голосов
/ 23 августа 2010

Запись заголовка «Referer» является необязательной. Вы не можете полагаться на его присутствие. Не существует кросс-браузерного способа получить предыдущую ссылку, потому что это зависит от настроек пользователя и конфигурации прокси-сервера (то есть то, что, по мнению системных администраторов, они должны разрешить вам видеть).

Вы должны найти способ жить без этой информации.

7 голосов
/ 23 августа 2010

Неясно, для чего вам это нужно, но я подозреваю, что вам нужно, чтобы иметь возможность вернуться на какую-то "начальную страницу" на том же веб-сайте, когда какое-то действие будет завершено.Тогда лучше всего передать URI запроса в качестве параметра запроса.Например, ссылка для входа в систему:

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

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

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

В методе действия входа в систему просто перенаправьтена этот URL после завершения действия.

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

Если это не то, что вы ищете, тогда вам действительно нужно больше проработать свой вопрос, чтобы спросить, как выполнить функциональное требование, а не спрашивать, как это сделать.достичь (неправильного) решения.

С самого начала полагаться на любой поток бизнес-логики на реферера было действительно плохой идеей.Ваш первый урок для веб-разработчика должен был состоять в следующем: конечный пользователь имеет полный контроль над тем, что он / она отправляет с HTTP-запросом.Вы не должны полагаться на всю эту информацию, не говоря уже о 100% правильности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...