TA的每日心情 | 擦汗 昨天 09:07 |
---|
签到天数: 527 天 连续签到: 4 天 [LV.9]测试副司令
|
1测试积点
Web Api接口如何获取访问站点的IP?
前提:我写了一个获取随机图片的webapi接口,然后嵌入到我的网站当做背景图。
接口里面做了访问IP限制,获取访问者的IP地址,想要实现仅供某个站点访问,即白名单。获取代码如下:
- public static string GetClientIp()
- {
-
- String clientIP = "";
- if (System.Web.HttpContext.Current != null)
- {
- clientIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
- if (string.IsNullOrEmpty(clientIP) || (clientIP.ToLower() == "unknown"))
- {
- clientIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"];
- if (string.IsNullOrEmpty(clientIP))
- {
- clientIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
- }
- }
- else
- {
- clientIP = clientIP.Split(',')[0];
- }
- }
- Match mc = Regex.Matches(clientIP, "((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d))))")[0];
- return mc.Groups[0].Value.ToString();
- }
复制代码
然后我做了访问测试,发现访问我的网站时,该接口获取到的IP是我当前电脑的IP地址(例如 119.2.154.145),而不是我的网站的IP地址(例如119.3.122.158)。因为这方便内容接触的比较少,就比较不能理解这个问题,请问大家我应该怎么操作,才能获取到是从哪个网站调用的我的API接口的呢?即我想获取嵌入了我接口的站点IP而不是当前访问站点的客户端IP。
|
|