前提:我写了一个获取随机图片的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。
你好,我查阅了这个问题,但似乎获取到的和我的代码获取到的是一样的IP,都是访问者客户端的IP
你的意思是你发布到多个服务器了吗,不然你的网站是不是应该只有一个IP呢???
我的博客,和接口是两个项目
为什么我这样弄 ip 是0.0.0.0 类似这样的,本机测试。。
我获取的是192.168.0.89 这种的