【ASP介面開發】獲取訪問URL的真實客戶端IP地址
阿新 • • 發佈:2019-02-13
目前專案中需要獲取到訪問介面的客戶端的真實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了。