用于IP地址的应用引擎请求标头

时间:2015-05-22 12:42:33

标签: java google-app-engine http servlets request

我有一个运行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。

1 个答案:

答案 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" };