1. 程式人生 > >【ASP介面開發】獲取訪問URL的真實客戶端IP地址

【ASP介面開發】獲取訪問URL的真實客戶端IP地址

目前專案中需要獲取到訪問介面的客戶端的真實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了。