HttpServletRequest – come ottenere l’URL di riferimento?

Devo registrare gli URL che collegano al mio sito in un servlet Java.

È disponibile nell’intestazione del referer HTTP . Puoi ottenerlo in una servlet come segue:

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

Tuttavia, è necessario rendersi conto che si tratta di un valore controllato dal cliente e può quindi essere parodiato a qualcosa di completamente diverso o addirittura rimosso. Pertanto, qualunque sia il valore restituito, non è consigliabile utilizzarlo per i processi aziendali critici nel back-end, ma solo per il controllo della presentazione (ad es. Nascondere / mostrare / modificare determinate parti del layout puro) e / o statistiche.

Per gli interessati, è ansible trovare informazioni sull’errore ortografico in Wikipedia .

In realtà è: request.getHeader("Referer") , o anche meglio, e per essere sicuro al 100%, request.getHeader(HttpHeaders.REFERER) , dove HttpHeaders è com.google.common.net.HttpHeaders

Gli URL vengono passati nella richiesta: request.getRequestURL() .

Se intendi altri siti che ti collegano? Vuoi catturare il Referrer HTTP, che puoi fare chiamando:

 request.getHeader("referer"); 

Come tutti hanno menzionato è

 request.getHeader("referer"); 

Vorrei aggiungere ulteriori dettagli sull’aspetto della sicurezza dell’intestazione del referente in contrasto con la risposta accettata. Nelle tabs cheat di Open Web Application Security Project ( OWASP ), sotto Prevention Cheat Sheet Cross-Site Request Forgery (CSRF) cita l’importanza dell’intestazione del referer .

Ancora più importante per questo controllo Stessa origine consigliato, un numero di intestazioni delle richieste HTTP non può essere impostato da JavaScript perché sono presenti nell’elenco delle intestazioni “vietate”. Solo i browser stessi possono impostare valori per queste intestazioni, rendendole più affidabili perché non è ansible utilizzare nemmeno una vulnerabilità XSS per modificarle.

Il controllo dell’origine dell’origine consigliato qui si basa su tre di questi header protetti: Origin, Referer e Host, rendendolo una difesa CSRF piuttosto forte da solo.

Puoi consultare l’ elenco delle intestazioni Proibita qui . L’agente utente (es .: browser) ha il pieno controllo su queste intestazioni e non sull’utente.