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

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

【问题讨论】:

    标签: spring-mvc referer


    【解决方案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 或通过书签来请求的,就会发生这种情况。
    猜你喜欢
    • 2011-06-28
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2011-10-03
    相关资源
    最近更新 更多