Comment puis-je obtenir l'URL du référent dans Spring MVC Controller?
Il est disponible comme en-tête de requête HTTP avec le nom referer
(oui, avec l'orthographe qui aurait dû être referrer
).
String referrer = request.getHeader("referer");
// ...
Ici, le request
est le HttpServletRequest
qui est disponible dans les beans Spring de plusieurs manières, entre autres par un @AutoWired
.
Veuillez garder à l'esprit qu'il s'agit d'une valeur contrôlée par le client qui peut facilement être usurpée/omise par le client.
Dans Spring MVC 3, vous pouvez l'obtenir à partir d'une demande, comme @BalusC l'a déjà dit:
public ModelAndView doSomething(final HttpServletRequest request) {
final String referer = request.getHeader("referer");
...
}
mais il existe également une annotation spéciale @ RequestHeader qui permet de simplifier votre code en
public ModelAndView doSomething(@RequestHeader(value = "referer", required = false) final String referer) {
...
}