使用HttpServletRequest获取请求发送者的URL

17
如何使用HttpServletRequest获取源域? 源域是请求者的域名。谢谢。
3个回答

36

你可以选择其中一种方式

// gets client (browser)'s hostname
String host = request.getRemoteHost(); 

或者

// get the server's domain name.
String domain = new URL(request.getRequestURL().toString()).getHost(); 

6
getRemoteHost() 返回客户端(或代理)的主机名。 - BalusC
@BalusC:是的,我现在意识到了。已更新答案。 :) - adarshr
10
如果Java直接从浏览器接收请求,则客户端主机名才有效。如果Java在F5 BIG-IP之类的设备后面,则应使用request.getHeader("X-FORWARDED-FOR")或其他传递客户端主机名的请求头来获取实际客户端主机名。request.getRemoteHost()只会给你负载均衡器的IP或域名,因为它是将请求发送到Java的东西。 - fourgablesguy

2
为了获取源域名,可以使用request.getHeader("origin"),特别是当请求必须通过代理服务器时。

0

主机名请求

InetAddress ip = InetAddress.getLocalHost();
String hostname = ip.getHostName();
out.print("Your current IP address : " + ip+"\n");
out.print("Your current Hostname : " + hostname);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接