Odpowiedzi:
Jest dostępny w nagłówku HTTPreferer
. Możesz go pobrać w serwlecie w następujący sposób:
String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.
Musisz jednak zdać sobie sprawę, że jest to wartość kontrolowana przez klienta i dlatego można ją sfałszować na coś zupełnie innego, a nawet usunąć. W związku z tym, niezależnie od zwracanej wartości, nie należy jej używać do żadnych krytycznych procesów biznesowych w zapleczu, a jedynie do sterowania prezentacją (np. Ukrywania / pokazywania / zmiany niektórych czystych części układu) i / lub statystyk.
Dla zainteresowanych wyjaśnienie dotyczące błędów ortograficznych można znaleźć w Wikipedii .
null
.
Właściwie to:
request.getHeader("Referer")
lub nawet lepiej, a żeby być pewnym na 100%
request.getHeader(HttpHeaders.REFERER)
, gdzie jest HttpHeaderscom.google.common.net.HttpHeaders
getHeader(String name)
(cytat):"The header name is case insensitive."
org.apache.http.HttpHeaders
Jak wszyscy wspomnieli, jest
request.getHeader("referer");
Chciałbym dodać więcej szczegółów na temat aspektu bezpieczeństwa nagłówka referer w przeciwieństwie do akceptowanej odpowiedzi. W ściągach Open Web Application Security Project ( OWASP ), w sekcji Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet wspomina się o znaczeniu nagłówka referer .
Co ważniejsze, w przypadku tego zalecanego sprawdzania Same Origin nie można ustawić wielu nagłówków żądań HTTP w języku JavaScript, ponieważ znajdują się one na liście „zabronionych” nagłówków. Tylko same przeglądarki mogą ustawić wartości dla tych nagłówków, co czyni je bardziej godnymi zaufania, ponieważ nawet luka XSS nie może zostać wykorzystana do ich modyfikacji.
Zalecane tutaj sprawdzenie pochodzenia źródła opiera się na trzech z tych chronionych nagłówków: Origin, Referer i Host, co czyni go całkiem silną obroną CSRF.
Możesz odnieść się do listy zabronionych nagłówków tutaj . Agent użytkownika (tj. Przeglądarka) ma pełną kontrolę nad tymi nagłówkami, a nie użytkownik.