request对象的ServerVariables集合

本文探讨了ASP.NET中评论人IP地址显示为“::1”的原因,并提供了一种解决方案,即如何正确地显示IPv4地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  【前言】小编再调试新闻发布系统的时候发现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的数据类型  

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

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值