台灣最大裝潢接案平台 輕鬆接案網 | 專精高難度抓漏工程,近30年經驗 快速找出問題所在,品質絕佳。 |
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 |
|
廣利不動產-新板特區指名度最高、值得您信賴的好房仲 您的托付,廣利用心為您服務 廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲 完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心! |
姓名: | |||
佈告內容: | |||
其他選項: | |||
|