使用CDN后如何获取客户的真实IP

网站使用CDN后发现获取的IP不是客户的真实IP,而是CDN节点的IP地址。那么有什么办法可以取到呢?CDN会把客户的IP加入到HTTP请求头传给网站的,所以只要遍历所有的请求头,看下哪个请求头带了真实IP,然后用这个请求头获取IP即可。

JAVA遍历请求头的代码如下:


Enumeration eum = request.getHeaderNames();
while(eum.hasMoreElements()) {
	String name = (String) eum.nextElement();
	String value = request.getHeader(name);
	System.out.println(name + "=" + value);
}

假设客户真实IP的请求头为x-forwarded-for,那么只要取这个请求头的值就行了,代码如下:



String ip = request.getHeader("x-forwarded-for");

注意:取到的IP可能是多个,用,号隔开的,取第一个即可。