获取客户端IP地址

小编是菜鸟,这两天拿到一个需求,登录时判断ip地址是否允许登录,这几天做下来小编遇见了好多坑,给大家分享一下。
系统架构:.net+java
首先,不管怎么样http请求头才是获取ip地址的唯一方式:
1、js是一个脚本语言,不能获取本机ip地址;
2、java可以直接获取请求,但是.net是要在iss上部署,如果直接在后端获取,获取的是部署机器上的ip地址,只能在.net部分获取;
话不多少,给大家分享一下源码;
java部分:
import javax.servlet.http.HttpServletRequest;

public class GetIp {
public static String getUserIp(HttpServletRequest request){
String ip = request.getHeader(“x-forwarded-for”);
if(ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)){
ip = request.getHeader(“Proxy-Client-IP”);
}
if(ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)){
ip = request.getHeader(“WL-Proxy-Client-IP”);
}
if(ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)){
ip = request.getRemoteAddr();
}
return ip;
}
}
.net部分:
public string GetIP()
{
HttpRequest request = HttpContext.ApplicationInstance.Context.Request;
string ip = request.ServerVariables[“HTTP_X_FORWARDED_FOR”];
if (string.IsNullOrEmpty(ip)) {
ip = request.ServerVariables[“REMOTE_ADDR”];
}
if (string.IsNullOrEmpty(ip)) {
ip = request.UserHostAddress;
}
if (string.IsNullOrEmpty(ip)) {
ip = “0.0.0.0”;
}
return ip;
}
大家有什么不懂,可以直接联系小编,小编第一时间为你解答!

猜你喜欢

转载自blog.csdn.net/qq_36323075/article/details/80090793
今日推荐