HttpServletRequest - как получить ссылающийся URL? - PullRequest
139 голосов
/ 16 апреля 2010

Мне нужно зарегистрировать URL-адреса, которые ссылаются на мой сайт, в сервлете Java.

Ответы [ 4 ]

294 голосов
/ 16 апреля 2010

Доступен в заголовке HTTP referer . Вы можете получить его в сервлете следующим образом:

String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.

Однако вам необходимо осознать, что это контролируемое клиентом значение и, таким образом, может быть подделано к чему-то совершенно другому или даже удалено. Таким образом, какое бы значение оно не возвращало, вы не должны использовать его для каких-либо критических бизнес-процессов в бэкэнде, а только для управления представлением (например, скрытие / отображение / изменение определенных частей макета) и / или статистики.

Для заинтересованных, справочную информацию об опечатках можно найти в Википедии .

24 голосов
/ 15 мая 2013

На самом деле это: request.getHeader("Referer"), или даже лучше, и чтобы быть на 100% уверенным, request.getHeader(HttpHeaders.REFERER), где HttpHeaders - com.google.common.net.HttpHeaders

15 голосов
/ 16 апреля 2010

URL передаются в запросе: request.getRequestURL().

Если вы имеете в виду другие сайты, которые ссылаются на вас? Вы хотите перехватить HTTP Referrer, что можно сделать, позвонив по номеру:

request.getHeader("referer");
6 голосов
/ 28 февраля 2017

Как уже упоминалось, это

request.getHeader("referer");

Я хотел бы добавить еще некоторые подробности об аспекте безопасности заголовка referer в отличие от принятого ответа.В шпаргалках проекта защиты открытого веб-приложения ( OWASP ) в разделе Шпаргалка по предотвращению подделки межсайтовых запросов (CSRF) упоминается важность заголовка referer .

Что еще более важно для этой рекомендуемой проверки Same Origin, количество заголовков HTTP-запросов не может быть установлено с помощью JavaScript, поскольку они находятся в списке «запрещенных» заголовков.Только сами браузеры могут устанавливать значения для этих заголовков, делая их более надежными, потому что даже уязвимость XSS не может быть использована для их изменения.

Рекомендуемая здесь проверка исходного источника основана на трех из этих защищенных заголовков: Источник,Referer и Host, что делает его довольно сильной защитой CSRF самостоятельно.

Вы можете сослаться на Список запрещенных заголовков здесь .Пользовательский агент (т. Е. Браузер) имеет полный контроль над этими заголовками, а не пользователь.

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