炫意html5
最早CSS3和HTML5移动技术网站之一

WebApi接口如何获取访问站点的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。

回答

如果你服务器使用了 Nginx 反代,可以在请求同中加入IP 请参阅
如果你是部署到IIS或者其它,请参阅

炫意HTML5 » WebApi接口如何获取访问站点的IP?

Java基础教程Android基础教程