HttpServletRequest – 如何获取引荐url?
我需要在Java Servlet中logging链接到我的网站的URL。
它在HTTP referer
头文件中可用。 你可以在servlet中获取它,如下所示:
String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.
然而,你需要意识到这是一个客户端控制的价值,因此可以被欺骗到完全不同的甚至是被删除的东西。 因此,无论它返回什么样的价值,都不应该将它用于后端的任何关键业务stream程,而只能用于表示控制(例如隐藏/显示/更改某些纯布局部分)和/或统计信息。
对于感兴趣的,有关拼写错误的背景可以在Wikipedia中find。
其实它是: request.getHeader("Referer")
,甚至更好,并100%肯定, request.getHeader(HttpHeaders.REFERER)
,其中HttpHeaders是com.google.common.net.HttpHeaders
这些URL在请求中传递: request.getRequestURL()
。
如果你的意思是其他网站链接到你? 您想要捕获HTTP Referrer,您可以通过调用:
request.getHeader("referer");
正如所有人提到的那样
request.getHeader("referer");
我想添加一些关于引用标题的安全性方面的细节,而不是接受的答案。 在开放Web应用安全项目( OWASP )备忘单中,在跨站请求伪造(CSRF)预防备忘单中提到了引用头的重要性。
更重要的是对于这个推荐的Same Origin校验,一些HTTP请求头文件不能由JavaScript设置,因为它们位于“禁止”头文件列表中。 只有浏览器本身可以为这些头文件设置值,这使得它们更加值得信赖,因为即使是XSS漏洞也不能用来修改它们。
这里推荐的源代码检查依赖于以下三个受保护的头文件:Origin,Referer和Host,使其成为一个非常强大的CSRF防御。
您可以在这里参考禁止标题列表 。 用户代理(即:浏览器)完全控制这些头,而不是用户。