Request.ServerVariables("Url") 返回服务器地址
Request.ServerVariables("Path_Info") 客户端提供的路径信息
Request.ServerVariables("Appl_Physical_Path") 与应用程序元数据库路径相应的物理路径
Request.ServerVariables("Path_Translated") 通过由虚拟至物理的映射后得到的路径
Request.ServerVariables("Script_Name") 执行脚本的名称
Request.ServerVariables("Query_String") 查询字符串內容
Request.ServerVariables("Http_Referer") 请求的字符串內容
Request.ServerVariables("Server_Port") 接受请求的服务器端口号
Request.ServerVariables("Remote_Addr") 发出请求的远程主机的IP地址
Request.ServerVariables("Remote_Host") 发出请求的远程主机名称
Request.ServerVariables("Local_Addr") 返回接受请求的服务器地址
Request.ServerVariables("Http_Host") 返回服务器地址
Request.ServerVariables("Server_Name") 服务器的主机名、DNS地址或IP地址
Request.ServerVariables("Request_Method") 提出请求的方法比如GET、HEAD、POST等等
Request.ServerVariables("Server_Port_Secure") 如果接受请求的服务器端口为安全端口时,则为1,否则为0
Request.ServerVariables("Server_Protocol") 服务器使用的协议的名称和版本
Request.ServerVariables("Server_Software") 应答请求并运行网关的服务器软件的名称和版本
Request.ServerVariables("All_Http") 客户端发送的所有HTTP标头,前缀HTTP_
Request.ServerVariables("All_Raw") 客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_
Request.ServerVariables("Appl_MD_Path") 应用程序的元数据库路径
Request.ServerVariables("Content_Length") 客户端发出內容的长度
Request.ServerVariables("Https") 如果请求穿过安全通道(SSL),则返回ON如果请求来自非安全通道,则返回OFF
Request.ServerVariables("Instance_ID") IIS实例的ID号
Request.ServerVariables("Instance_Meta_Path") 响应请求的IIS实例的元数据库路径
Request.ServerVariables("Http_Accept_Encoding") 返回內容如:gzip,deflate
Request.ServerVariables("Http_Accept_Language") 返回內容如:en-us
Request.ServerVariables("Http_Connection") 返回內容:Keep-Alive
Request.ServerVariables("Http_Cookie") 返回內容如:nVisiT%
2DYum=125;ASPSESSIONIDCARTQTRA=FDOBFFABJGOECBBKHKGPFIJI;ASPSESSIONIDCAQQTSRB=LKJJPLABABILLPCOGJGAMKAM;ASPSESSIONIDACRRSSRA=DK
HHHFBBJOJCCONPPHLKGHPB
Request.ServerVariables("Http_User_Agent") 返回內容:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)
Request.ServerVariables("Https_Keysize") 安全套接字层连接关键字的位数,如128
Request.ServerVariables("Https_Secretkeysize") 服务器验证私人关键字的位数如1024
Request.ServerVariables("Https_Server_Issuer") 服务器证书的发行者字段
Request.ServerVariables("Https_Server_Subject") 服务器证书的主题字段
Request.ServerVariables("Auth_Password") 当使用基本验证模式时,客户在密码对话框中输入的密码
Request.ServerVariables("Auth_Type") 是用户访问受保护的脚本时,服务器用於检验用户的验证方法
Request.ServerVariables("Auth_User") 代证的用户名
Request.ServerVariables("Cert_Cookie") 唯一的客户证书ID号
Request.ServerVariables("Cert_Flag") 客户证书标誌,如有客户端证书,则bit0为0如果客户端证书验证无效,bit1被设置为1
Request.ServerVariables("Cert_Issuer") 用户证书中的发行者字段
Request.ServerVariables("Cert_Keysize") 安全套接字层连接关键字的位数,如128
Request.ServerVariables("Cert_Secretkeysize") 服务器验证私人关键字的位数如1024
Request.ServerVariables("Cert_Serialnumber") 客户证书的序列号字段
Request.ServerVariables("Cert_Server_Issuer") 服务器证书的发行者字段
Request.ServerVariables("Cert_Server_Subject") 服务器证书的主题字段
Request.ServerVariables("Cert_Subject") 客户端证书的主题字段
Request.ServerVariables("Content_Type") 客户发送的form內容或HTTPPUT的数据类型 ALL_HTTP客户端发送的所有HTTP标题文件。 ALL_RAW检索未处理表格中所有的标题。 APPL_MD_PATH检索ISAPIDLL的(WAM)Application的元数据库路径。 APPL_PHYSICAL_PATH检索与元数据库路径相应的物理路径。IIS通过将APPL_MD_PATH转换为物理(目录)路径以返回值。 AUTH_PASSWORD该值输入到客户端的鉴定对话中。只有使用基本鉴定时,该变量才可用。 AUTH_TYPE这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。 AUTH_USER未被鉴定的用户名。 CERT_COOKIE客户端验证的唯一ID,以字符串方式返回。可作为整个客户端验证的签字。 CERT_FLAGS如有客户端验证,则bit0为1。如果客户端验证的验证人无效(不在服务器承认的CA列表中),bit1被设置为1. CERT_ISSUER用户验证中的颁布者字段(O=MS,OU=IAS,CN=username,C=USA)。 CERT_KEYSIZE安全套接字层连接关键字的位数,如128。 CERT_SECRETKEYSIZE服务器验证私人关键字的位数。如1024。 CERT_SERIALNUMBER用户验证的序列号字段。 CERT_SERVER_ISSUER服务器验证的颁发者字段。 CERT_SERVER_SUBJECT服务器验证的主字段。 CERT_SUBJECT客户端验证的主字段。 CONTENT_LENGTH客户端发出内容的长度。 CONTENT_TYPE内容的数据类型。同附加信息的查询一起使用,如:HTTP查询GET、POST和PUT。 GATEWAY_INTERFACE服务器使用的CGI规格的修订。格式为CGI/revision。 LOGON_USER用户登录WindowsNT®的帐号。 PATH_INFO客户端提供的额外路径信息。可以使用这些虚拟路径和PATH_INFO服务器变量访问脚本。如果该信息来自URL,在到达CGI脚本前就已经由服务器解码了。 PATH_TRANSLATEDPATH_INFO转换后的版本,该变量获取路径并进行必要的由虚拟至物理的映射。 QUERY_STRING查询HTTP请求中问号(?)后的信息。 REMOTE_ADDR发出请求的远程主机的IP地址。 REMOTE_HOST发出请求的主机名称。如果服务器无此信息,它将设置为空的MOTE_ADDR变量。 REMOTE_USER用户发送的未映射的用户名字符串。该名称是用户实际发送的名称,与服务器上验证过滤器修改过后的名称相对。 REQUEST_METHOD该方法用于提出请求。相当于用于HTTP的GET/HEAD/POST等等。 SCRIPT_NAME执行脚本的虚拟路径。用于自引用的URL。 SERVER_NAME出现在自引用UAL中的服务器主机名、DNS化名或IP地址。 SERVER_PORT发送请求的端口号。 SERVER_PORT_SECURE包含0或1的字符串。如果安全端口处理了请求,则为1,否则为0。 SERVER_PROTOCOL请求信息协议的名称和修订。格式为protocol/revision。 SERVER_SOFTWARE应答请求并运行网关的服务器软件的名称和版本。格式为name/version。
被发现隐起的 Request.ServerVariables("NUMBER_OF_PROCESSORS") Request.ServerVariables("OS") Request.ServerVariables("WINDIR") Request.ServerVariables("TEMP") Request.ServerVariables("TMP") Request.ServerVariables("ComSpec") Request.ServerVariables("Os2LibPath") Request.ServerVariables("Path") Request.ServerVariables("PATHEXT") Request.ServerVariables("PROCESSOR_ARCHITECTURE") Request.ServerVariables("PROCESSOR_IDENTIFIER") Request.ServerVariables("PROCESSOR_LEVEL") Request.ServerVariables("PROCESSOR_REVISION")
Request.ServerVariables("HTTP_X_FORWARDED_FOR") 是可以获得位于代理(网关)后面的直接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") If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") ......
即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。
通用函数:如果不能取客户端真实IP,就会取客户端的代理IP Private 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 getIP = Trim(Mid(strIPAddr, 1, 30)) End Function |