【ASP接口开发】获取访问URL的真实客户端IP地址

目前项目中需要获取到访问接口的客户端的真实IP,暂时用此做一个简单的认证。在网上搜了个还算靠谱的,特做下记录:

public strIP
if strIP="" then strIP=""		'如果没有定义 strIP 全局变量则定义它
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
        strIP = Trim(Mid(strIPAddr,1,30))
end function

定义一个全局变量,用来存储URL的IP地址。

原理很简单:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。 

经过测试是可用的,我开着VPN的代理,然后访问接口,得到的依旧是我们单位办公网的IP地址,看来确实是调用了HTTP_X_FORWARDED_FOR的值。

题外话:

之前可能是直接从网页上复制粘贴上去的,导致VS总是提示我错误,后来google了下看到有说可能是用到了全角空格的原因,于是就在错误提示的那行重新打了一下,果然错误就到下一行了,确定了是复制粘贴上了全角空格的原因,就重新全部手打了一遍,这次就OK了。

时间: 2024-11-05 12:21:32

【ASP接口开发】获取访问URL的真实客户端IP地址的相关文章

asp.net 透过ISA获取真实的IP地址

问题描述 请问各位大虾如何透过ISA获取客户端真实的IP地址?Page.Request.UserHostAddress;Request.ServerVariables("REMOTE_ADDR")Request.ServerVariables("HTTP_X_FORWARDED_FOR")都没用

ASP.NET获取真正的客户端IP地址的6种方法_实用技巧

在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址. 要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取. 不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables(

nginx做反向负载均衡,后端服务器获取真实客户端ip(转)

首先,在前端nginx上需要做如下配置: location / proxy_set_hearder host                $host; proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header X-real-ip           $remote_addr; }; nginx会在把请求转向后台real-server前把http报头中的ip地址进行替换:这样操作完成后,real-s

JS简单获取客户端IP地址的方法【调用搜狐接口】_javascript技巧

本文实例讲述了JS简单获取客户端IP地址的方法.分享给大家供大家参考,具体如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>使用搜狐接口获取客户端IP地址</title> </head> <body> <script src="http://pv.sohu.com/cityjson?ie=utf-8

php-PHP网站获取客户端IP地址固定都是北京的

问题描述 PHP网站获取客户端IP地址固定都是北京的 我用PHP开发了一个网站,先放在了主机屋免费空间上进行测试,想获取访问的客户端 的IP,可是每次获取到的IP都一样. 解决方案 ip地址是不是你服务器的地址?如果是是防火墙的问题 REMOTE_ADDR得到服务器IP,非客户端的IP 解决方案二: 有可能是百度,搜狗,360等网络爬虫访问你的页面,他们无时无刻都在扫描网络中的网页,不要激动,骚年.

php如何获取客户端IP地址

php获取客户端IP地址的几种方法 阅读php获取客户端IP地址的几种方法, <?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $iipp; ?> <?php $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($

ip网址怎么获取客户端ip地址

问题描述 比如地址是:1.51.23.111/index.aspx没有域名怎么获取客户端ip地址///<summary>///获取远程访问用户的Ip地址///</summary>///<returns>返回Ip地址</returns>protectedstringGetIps(){stringloginip="";//Request.ServerVariables[""]--获取服务变量集合if(Request.Ser

NGINX前端代理TOMCAT取真实客户端IP

nginx前端代理tomcat取真实客户端IP 使用Nginx作为反向代理时,Tomcat的日志记录的客户端IP就不在是真实的客户端IP,而是Nginx代理的IP.要解决这个问题可以在Nginx配置一个新的Header,用来存储$remote_add,然后再Tomcat获取记录这个值. 新增nginx配置.   server { listen 80; server_name www.xxxxx.com; location / { proxy_pass http://IP:8080/; proxy

python简单获取本机计算机名和IP地址的方法

  本文实例讲述了python简单获取本机计算机名和IP地址的方法.分享给大家供大家参考.具体实现方法如下: 方法一: ? 1 2 3 4 5 6 7 8 9 10 >>> import socket >>> hostname = socket.gethostname() >>> print hostname china-43226208c >>>ip = socket.gethostbyname(hostname) >>