aspHTTP_X_FORWARDED_FOR和REMOTE_ADDR
for Remote addr forwarded
2023-06-13 09:14:09 时间
在Request.ServerVariables中并没有HTTP_X_FORWARDED_FOR这个变量,只有REMOTE_ADDR这个变量,但是这两个变量都能够取得客户端IP地址。那么他们之间的区别是什么呢?
在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")
Ifuserip=""Thenuserip=Request.ServerVariables("REMOTE_ADDR")
......
即:如果客户端通过代理服务器,则取HTTP_X_FORWARDED_FOR的值,如果没通过代理服务器,就取REMOTE_ADDR的值。
当然,上面的这种做法并不是万能的,就像第三段提到的那样,你有没有考虑到如果用户使用的是2级代理、3级代理、4级代理........
在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")
Ifuserip=""Thenuserip=Request.ServerVariables("REMOTE_ADDR")
......
即:如果客户端通过代理服务器,则取HTTP_X_FORWARDED_FOR的值,如果没通过代理服务器,就取REMOTE_ADDR的值。
当然,上面的这种做法并不是万能的,就像第三段提到的那样,你有没有考虑到如果用户使用的是2级代理、3级代理、4级代理........
相关文章
- Sketch for mac(矢量绘图UI设计软件)92中文激活版
- ps2023 for Mac激活版一键安装,Photoshop 2022 v23.2 ACR15下载安装教程
- Snagit for mac(强大的屏幕截图工具)v2023.0.2激活版
- MATLAB R2021b for Mac(可视化数学分析软件)中文版
- Microsoft Remote Desktop for Mac(微软远程连接工具) v10.8.1(2042)中英直装版
- Mac最先进的API工具-RapidAPI for Mac
- 矢量图形设计工具Mac中文版:Sketch for Mac
- Autodesk AutoCAD 2021 for mac(cad2021)
- ZBrush 2023.1 for Mac(三维数字雕刻软件)
- Video Collage for Mac(视频剪辑和照片拼贴软件)
- ORA-24083: cannot specify remote subscribers for string QUEUE string ORACLE 报错 故障修复 远程处理
- ORA-25250: Cannot specify a remote recipient for the message ORACLE 报错 故障修复 远程处理
- ORA-27545: Fail to prepare buffer for remote update ORACLE 报错 故障修复 远程处理
- ORA-28270: Malformed user nickname for password authenticated global user. ORACLE 报错 故障修复 远程处理
- ORA-30009: Not enough memory for string operation ORACLE 报错 故障修复 远程处理
- ORA-30086: interval year-month result not allowed for datetime subtraction ORACLE 报错 故障修复 远程处理
- ORA-31673: worker process interrupt for normal exit by master process ORACLE 报错 故障修复 远程处理
- ORA-32416: one or more commit SCN-based materialized view logs are not in consistent state for fast refresh ORACLE 报错 故障修复 远程处理
- ORA-00437: ORACLE feature is not licensed. Contact Oracle Corp. for assistance ORACLE 报错 故障修复 远程处理
- ORA-02015: cannot select FOR UPDATE from remote table ORACLE 报错 故障修复 远程处理
- ORA-09316: szrpc: unable to verify password for role ORACLE 报错 故障修复 远程处理
- 循环Linux中使用For循环的正确方式(linux里的for)
- 使用For循环掌控Oracle数据库(for循环oracle)
- 循环使用Oracle数组实现For循环(oracle数组for)
- 的使用使用Oracle中的For循环加深理解(oracle中for循环)
- MySQL中使用FOR循环的实践(mysql的for循环)
- statementUsing MSSQL Case Statements for Conditional Queries(mssqlcase)
- Download Oracle 32bit for Optimal Software Performance(oracle32位下载)
- MySQL中使用FOR循环快速编写函数(mysql函数for)
- 遍历Oracle中用For反向遍历字符串的简单示例(oracle中for反向)