多年拆除工程經驗,專營裝潢拆除 隔間打牆等施工,歡迎洽詢 | 創新廣告招牌設計,親民價格 頂級質感,連鎖企業合作推薦! |
ASP.NET 程式如何取得客戶端真實 IP |
房東:天使 發表時間:2007-02-12 | [檢舉] |
在 ASP.NET 中使用 Request.ServerVariables(\"REMOTE_ADDR\") 來取得客戶端(Client)的IP地址,但如果客戶端是使用代理伺服器時,那取到的就是代理伺服器的 IP 位址,而不是真正的客戶端 IP 位址。要想透過代理伺服器取得客戶端的真實IP地址,就要使用Request.ServerVariables(\"HTTP_X_FORWARDED_FOR\") 來讀取。不過要注意的,並不是每個代理伺服器都能用Request.ServerVariables(\"HTTP_X_FORWARDED_FOR\") 來讀取客戶端的真實 IP,有些用此方法讀取到的仍然是代理伺服器的IP。另外需要注意的是:如果客戶端沒有透過代理伺服器時,那麼用Request.ServerVariables (\"HTTP_X_FORWARDED_FOR\") 取到的值將是空的。因此,如果要在程式中使用這個方法,可以使用類似下面程式片段來處理: Dim ClientIP As String = Request.ServerVariables(\"HTTP_X_FORWARDED_FOR\") IF ClientIP = String.Empty Then ClientIP = Request.ServerVariables(\"REMOTE_ADDR\") End IF 也就是說,如果客戶端透過代理伺服器時,我們所取到的是 HTTP_X_FORWARDED_FOR 值,如果沒透過代理伺服器,就會取到REMOTE_ADDR 的值。 \'下面筆者就使用一個函式來展示如何取得遠端使用者的 IP 位址。程式的邏輯為,如果不能取客戶端真實 IP,就會取客戶端的代理IP。 Private Function GetClientIP() Dim strIPAddr As Atring 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 Return Mid(strIPAddr, 1, 30).Trim End Function |
廣利不動產-新板特區指名度最高、值得您信賴的好房仲 您的托付,廣利用心為您服務 廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲 完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心! |