目前项目中需要获取到访问接口的客户端的真实IP,暂时用此做一个简单的认证。在网上搜了个还算靠谱的,特做下记录:
public strIP if strIP="" then strIP="" '如果没有定义 strIP 全局变量则定义它 function getIP() dim strIPaddr if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),"unknown")>0 Then strIPAddr = Request.ServerVariables("REMOTE_ADDR") elseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),",")>0 Then strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),1,InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),",")-1) elseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),";")>0 Then strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),1,InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),";")-1) else strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR") end if strIP = Trim(Mid(strIPAddr,1,30)) end function
定义一个全局变量,用来存储URL的IP地址。
原理很简单:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。
经过测试是可用的,我开着VPN的代理,然后访问接口,得到的依旧是我们单位办公网的IP地址,看来确实是调用了HTTP_X_FORWARDED_FOR的值。
题外话:
之前可能是直接从网页上复制粘贴上去的,导致VS总是提示我错误,后来google了下看到有说可能是用到了全角空格的原因,于是就在错误提示的那行重新打了一下,果然错误就到下一行了,确定了是复制粘贴上了全角空格的原因,就重新全部手打了一遍,这次就OK了。
时间: 2024-11-05 12:21:32