Request.ServerVariables集合 说明(转)
2009年04月16日 星期四 上午 09:16
Request.ServerVariables集合
ALL_HTTP 客户端发送的所有 HTTP 标题文件。 ALL_RAW 检索未处理表格中所有的标题。 APPL_MD_PATH 检索 ISAPI DLL 的 (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=user name,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 用户登录 Windows NT® 的帐号。 PATH_INFO 客户端提供的额外路径信息。可以使用这些虚拟路径和PATH_INFO服务器变量访问脚本。如果该信息来自URL,在到达CGI脚本前就已经由服务器解码了。 PATH_TRANSLATED PATH_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
|