我在AWS Elastic Beanstek中部署了一个Spring Boot应用程序。
对于我的一个API,我需要检查客户端主机名地址。
我正在使用
String ipAddress = request.getRemoteAddr();
String hostname = request.getRemoteHost();
(其中Request
是HttpServletRequest
)。
我知道HTTP规范和Java servlet规范都说这两个值可能都不存在。然而,我看到,每次两者的值都是“127.0.0.1”。
我假设Elastic Beansta的设置方式,对VM的所有请求都来自内部。有没有办法从内部检索客户端地址标头?
如果我使用CloudFront终止HTTPS,有没有办法让它通过客户端地址?
这个问题的基本答案是AWS Elastic Beanstalk通过本地代理获取请求。CloudFront还充当反向代理。
解决方案是在请求上使用X-Forwarded-For
标头。
这是HTTP代理服务器使用的事实上的标准标头。
这是一个多值头-由沿途的每个代理填充。第一个条目是实际的远程客户端地址。后续值适用于代理主机。
<代码>请求。getHeader(“X-Forwarded-For”)将为您提供原始值。
request.get标头("X-Forwarded-For")
会给你一个枚举
[1]
枚举
是一个接口——最常见的实现是Vector
。迭代如下
Enumeration<String> headers = ...;
while (headers.hasMoreElements()) {
String header = headers.nextElement();
// TODO: process header ...
}
get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址
问题内容: 是否可以在Node.js中获取 主机名 ? 这是我获取客户IP的方式: 那么,如何获得客户的主机名? 谢谢您的回复! 问题答案: 我认为唯一的方法是这样的: 但我建议您实际上并不需要它,这并不是您可以对信息做任何有用的事情。如果您只想让字符串标识用户的计算机,则可以进行一些处理。 如果您真正想要的是FQDN,那么我建议它仍然对您没有太大帮助,但为此您需要反向DNS查找。如果您使用的是V
get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址
问题内容: 我需要知道客户的IP地址,这是我的鳕鱼 处理程序: 结果: 为什么我无法获得真正的客户IP? 问题答案: 通常,您可以用来获取正在访问Web应用程序的客户端的IP地址。但是,如果用户位于代理服务器后面或通过负载均衡器访问您的Web服务器(例如,在云托管中),则上述代码段将获取代理服务器或负载均衡器服务器的IP地址,而不是原始IP地址客户。 因此,您应该获得请求的HTTP标头“ X-Fo
问题内容: 在Node.js服务器中使用socket.IO时,是否有一种简单的方法来获取传入连接的IP地址?我知道您可以从标准的HTTP连接中获得它,但是socket.io有点不同。 问题答案: 好的,从0.7.7版本开始可用,但是不像lubar所描述的那样。我最终需要通过git hub上的一些提交日志来解析该问题,但是下面的代码现在确实对我有用:
问题内容: 我正在尝试开发一个Java Web应用程序(Servlet),该服务器需要获取客户端IP地址。 以下是我到目前为止的代码: 在大多数情况下,我会得到“默认网关地址”(147.120.1.5)。不是我的机器IP地址(174.120.100.17)。 在大多数情况下,我会得到“默认网关地址”(147.120.1.5)。不是我的机器IP地址(174.120.100.17)。 在这种情况下,我