1.js获取:
<pre class="html" name="code"><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!--搜狐IP地址查询接口:<span style="background-color: rgb(240, 240, 240);"><a target=_blank href="http://pv.sohu.com/cityjson">http://pv.sohu.com/cityjson</a></span> -->
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
</head>
<body>
<script type="text/javascript">
//默认为GBK可通过ie参数设置编码
var info = returnCitySN["cip"];
alert(info);
document.write(info);//输出到页面
console.log(returnCitySN["cip"])//控制台打印
</script>
</body>
</html>
2.后台获取:
<pre class="java" name="code">private static final String NUKNOWN = "unknown";
private static final String[] ADDR_HEADER = { "X-Forwarded-For",
"Proxy-Client-IP", "WL-Proxy-Client-IP", "X-Real-IP" };
/**
* 获得真实IP地址。在使用了反向代理时,直接用HttpServletRequest.getRemoteAddr()无法获取客户真实的IP地址。
*/
public static String getRemoteAddr(ServletRequest request) {
String addr = null;
if (request instanceof HttpServletRequest) {
HttpServletRequest hsr = (HttpServletRequest) request;
for (String header : ADDR_HEADER) {
if (StringUtils.isBlank(addr) || NUKNOWN.equalsIgnoreCase(addr)) {
addr = hsr.getHeader(header);
} else {
break;
}
}
}
if (StringUtils.isBlank(addr) || NUKNOWN.equalsIgnoreCase(addr)) {
addr = request.getRemoteAddr();
} else {
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按','分割
int i = addr.indexOf(",");
if (i > 0) {
addr = addr.substring(0, i);
}
}
return addr;
}