在 Spring MVC 中获取引用 URL

Posted

技术标签:

【中文标题】在 Spring MVC 中获取引用 URL【英文标题】:Get Referer URL in Spring MVC 【发布时间】:2011-08-01 03:03:54 【问题描述】:

如何在 Spring MVC Controller 中获取引用 URL?

【问题讨论】:

【参考方案1】:

在 Spring MVC 3 中,您可以从请求中获取它,正如 @BalusC 已经说过的:

public ModelAndView doSomething(final HttpServletRequest request) 
    final String referer = request.getHeader("referer");
    ...

但也有特殊的注释@RequestHeader 可以简化你的代码

public ModelAndView doSomething(@RequestHeader(value = "referer", required = false) final String referer) 
    ...

【讨论】:

感谢您的解决方案。只有一件事需要注意的是,我必须在Referer中使用大写的R。 @steven-dix 标题名称应该不区分大小写,因为 Spring 使用 HttpServletRequest.getHeaders() 其中“标题名称不区分大小写”(来自 API 的引用)它也适用于我。无论如何,感谢您分享此内容,可能在某些环境中这会对某人有所帮助。 您可以使用HttpHeaders.REFERER 常量而不是硬编码referer【参考方案2】:

它可用作名称为 referer 的 HTTP 请求标头(是的,拼写错误应该是 referrer)。

String referrer = request.getHeader("referer");
// ...

这里的requestHttpServletRequest,可以通过多种方式在Spring bean 中使用,其中包括@AutoWired

请记住,这是一个客户端控制的值,很容易被客户端欺骗/忽略。

【讨论】:

谢谢我这样做了,但忘记了我在主页上,这就是为什么它始终是基本 url。我将需要使用更长的 url 解析内页上的引用者中的主机名。我正在比较 IP 和主机名。谢谢! 你知道为什么referer为空吗? 如果页面是通过直接在地址栏中输入 URL 或通过书签来请求的,就会发生这种情况。

以上是关于在 Spring MVC 中获取引用 URL的主要内容,如果未能解决你的问题,请参考以下文章

在 spring mvc 中使用 thymeleaf 引用 .css 文件

Spring Mvc源码剖析

Spring Mvc源码剖析

Spring Mvc源码剖析

Spring Mvc源码剖析

Spring MVC 从 RequestMapping 引用 params 变量