Відповіді:
Він доступний у заголовку HTTPreferer
. Ви можете отримати його в сервлеті наступним чином:
String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.
Однак вам потрібно усвідомити, що це значення, кероване клієнтом, і тому його можна підробляти на щось зовсім інше або навіть видаляти. Таким чином, яке б значення воно не повертало, ви не повинні використовувати його для будь-яких критичних бізнес-процесів у бекенді, а лише для контролю презентації (наприклад, приховування / показ / зміна певних чистих частин компонування) та / або статистики.
Для зацікавлених можна ознайомитись з інформацією про неправильну написання у Вікіпедії .
null
.
Насправді це:
request.getHeader("Referer")
або ще краще, і щоб бути на 100% впевненим
request.getHeader(HttpHeaders.REFERER)
, де є HttpHeaderscom.google.common.net.HttpHeaders
getHeader(String name)
(цитата):"The header name is case insensitive."
org.apache.http.HttpHeaders
Як усі вже згадували
request.getHeader("referer");
Я хотів би додати ще детальну інформацію про аспект безпеки заголовка реферала на відміну від прийнятої відповіді. У відкритих аркушах безпеки проекту Open Web Application Project ( OWASP ) у розділі чіт-листів запобігання підробці веб-сайтів (CSRF) згадується важливість заголовка реферала .
Що ще важливіше для цієї рекомендованої перевірки того ж самого оригіналу, деякі заголовки запитів HTTP не можуть бути встановлені JavaScript, оскільки вони знаходяться у списку заборонених заголовків. Тільки самі веб-переглядачі можуть встановлювати значення для цих заголовків, роблячи їх більш надійними, оскільки для зміни їх не можна використовувати навіть вразливість XSS.
Рекомендована перевірка джерела джерела посилається на три з цих захищених заголовків: Origin, Referer та Host, що робить його досить сильною обороною CSRF.
Ви можете посилатися на список заборонених заголовків тут . Агент користувача (тобто браузер) має повний контроль над цими заголовками, а не користувачем.