使用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可能是多个,用,号隔开的,取第一个即可。