我有一个运行REST Web服务的app引擎应用程序。 我想从我的Web服务处理的所有请求中提取IP地址。
来自javax.servlet.http.HttpServletRequest我正在尝试提取检查“X-Real-IP”的IP地址,如果为空或“未知”,请检查“X-Forwarded-For”列表中的第一个ip “header if empty或”unknown“从request.getRemoteAddr()获取它。
我以为我覆盖了所有情况,但我仍然得到像10.x.x.x或127.0.0.1或未知的IP地址。
我知道app引擎应用程序在负载均衡器后面运行,实例是动态的,我当然在请求中省略了一个标题,因为我可以在日志中看到原始的ip地址(来自google)。
编辑:我正在处理的所有请求都是直接请求服务(没有队列或cron请求)。
要检查其他标头的任何想法吗?
thx。答案 0 :(得分:2)
this Question的回答可能对您有所帮助。要检查的标题很多:
private static final String[] HEADERS_TO_TRY = {
"X-Forwarded-For",
"Proxy-Client-IP",
"WL-Proxy-Client-IP",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_X_CLUSTER_CLIENT_IP",
"HTTP_CLIENT_IP",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_VIA",
"REMOTE_ADDR" };