在ASP 中使用Request.ServerVariables(REMOTE_ADDR) 來取得客戶端的IP 位址,但如果客戶端是使用代理伺服器來訪問,那麼取到的就是代理伺服器的IP 位址,而不是真正的客戶端IP 位址。若要透過代理伺服器取得客戶端的真實IP 位址,就要使用Request.ServerVariables(HTTP_X_FORWARDED_FOR) 來讀取。
不過要注意的事,並不是每個代理伺服器都能用Request.ServerVariables(HTTP_X_FORWARDED_FOR) 來讀取客戶端的真實IP,有些用此方法讀取到的仍然是代理伺服器的IP。
還有一點要注意的是:如果客戶端沒有透過代理伺服器來訪問,那麼用Request.ServerVariables(HTTP_X_FORWARDED_FOR) 取到的值將會是空的。因此,如果要在程式中使用此方法,可以這樣處理:
.....
userip = Request.ServerVariables(HTTP_X_FORWARDED_FOR)
If userip = Then userip = Request.ServerVariables(REMOTE_ADDR)
.....
即:若客戶端通過代理伺服器,則取HTTP_X_FORWARDED_FOR 的值,若未通過代理伺服器,就取REMOTE_ADDR 的值。