在 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");
// ...
这里的request
是HttpServletRequest
,可以通过多种方式在Spring bean 中使用,其中包括@AutoWired
。
请记住,这是一个客户端控制的值,很容易被客户端欺骗/忽略。
【讨论】:
谢谢我这样做了,但忘记了我在主页上,这就是为什么它始终是基本 url。我将需要使用更长的 url 解析内页上的引用者中的主机名。我正在比较 IP 和主机名。谢谢! 你知道为什么referer为空吗? 如果页面是通过直接在地址栏中输入 URL 或通过书签来请求的,就会发生这种情况。以上是关于在 Spring MVC 中获取引用 URL的主要内容,如果未能解决你的问题,请参考以下文章