微信内置浏览器获取正确IP地址的方法
2015-11-10 Shane Jhu
之前做了个根据IP获取MSN五天天气预报的页面,在微信中测试时,发现微信的内置浏览器似乎自带了代理,哈尔滨的IP跑到天津去了:
以下C#代码可以在使用代理的情况下获取真实IP地址的方法。
/// <summary> /// 获取真实IP /// </summary> /// <param name="request">请求对象</param> /// <returns>真实IP</returns> public static string GetRequestIP(HttpRequest request) { string result = request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (!String.IsNullOrEmpty(result)) { if (result.IndexOf(".") == -1) return null; if (result.IndexOf(",") == -1) return result; return result.Split(',').FirstOrDefault(i => !i.StartsWith("192.168.") && !i.StartsWith("10.") && !i.StartsWith("172.16.")); } result = request.ServerVariables["REMOTE_ADDR"]; return !String.IsNullOrEmpty(result) ? result : request.UserHostAddress; }
其中 request.ServerVariables["HTTP_X_FORWARDED_FOR"] 的原理和弊端请自行百度,有一点要说明的是,此方法在使用多级代理的情况下,会获取以","分隔的多个IP。
使用以上方法,我们可以看到 request.ServerVariables["REMOTE_ADDR"] 和 request.ServerVariables["HTTP_X_FORWARDED_FOR"] 的区别:
最后,在微信中就可以获取正确的IP和位置了。
本文由lenashane.com原创,转载请注明出处:查看原文
如果觉得文章还不错,请点个赞吧