request对象的ServerVariables集合

来源:互联网 发布:网络强国建设论文结尾 编辑:程序博客网 时间:2024/05/16 09:02

  【前言】小编再调试新闻发布系统的时候发现IP地址显示不出来,追根溯源终于找到了问题出在了哪里。把我的收获分享给大家!

一、问题

  在界面上显示不出来评论人的IP地址,代码中是使request.ServerVariables(“remote_addr”)来获取评论人IP地址的,将代码走查之后发现,获取到的IP是“::1”;因为显示在界面时,为了保护评论人的安全对IP进行了截取只显示部分,自然就显示不出来ip地址了。

二、IP地址为什么会显示为“::1”

  我查到的原因是request.ServerVariables(“remote_addr”)获取的是ipv6地址,而“::1”则代表本机地址,所以如果获取的是不同主机的地址那么久不会出现这个问题。
  所以我在这里采用了一个比较简单的方式来解决,直接在获取之后判断一下,如果是“::1”就显示本地IP。如果大家有更好的解决方式,欢迎一起交流!

if (userIp =="::1")            {                userIp = "127.0.0.1";            }

三、asp.net的Request.ServerVariables参数部分说明

Request.ServerVariables["SERVER_NAME"]         '获取服务器IP  Request.ServerVariables["HTTP_REFERER"]       '获取访问来源页面  Request.ServerVariables["OS"]                              '获取操作系统  request.ServerVariables["APPL_PHYSICAL_PATH"]      '获取IIS物理路径  Request.ServerVariables["SCRIPT_NAME"]                   '获取虚拟路径  Request.ServerVariables["NUMBER_OF_PROCESSORS"]    '获取服务器CPU个数  Request.ServerVariables["SERVER_PORT"]                 '服务器处理请求的端口  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"]     返回内容:Cookie的值  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的数据类型  

  【总结】遇到问题,我们先分析一下出现该问题的原因,然后再去找解决方法就容易很多了,欢迎大家一起交流!