web-dev-qa-db-fra.com

Obtenir l'URL du référent dans Spring MVC

Comment puis-je obtenir l'URL du référent dans Spring MVC Controller?

31
Mike Flynn

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.

29
BalusC

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) {
    ...
}
39
Slava Semushin