String agent = request.getHeader("user-agent");
System.out.println(agent);
StringTokenizer st = new StringTokenizer(agent,";");
st.nextToken();
//得到用户的浏览器名 String userbrowser = st.nextToken(); System.out.println(userbrowser); //得到用户的操作系统名 String useros = st.nextToken(); System.out.println(useros); //取得本机的信息也可以这样: //操作系统信息 System.out.println(System.getProperty("os.name")); //win2003竟然是win xp? System.out.println(System.getProperty("os.version")); System.out.println(System.getProperty("os.arch")); //瀏覽器: System.out.println(request.getHeader("user-agent"));
//再送个红包
System.out.println(request.getHeader("user-agent")); //返回客户端浏览器的版本号、类型 System.out.println(request.getMethod()); //:获得客户端向服务器端传送数据的方法有get、post、put等类型
System.out.println(request.getRequestURI()); //:获得发出请求字符串的客户端地址 System.out.println(request.getServletPath()); //:获得客户端所请求的脚本文件的文件路径
System.out.println(request.getServerName()); //:获得服务器的名字
System.out.println(request.getServerPort()); //:获得服务器的端口号
System.out.println(request.getRemoteAddr()); //:获得客户端的ip地址
System.out.println(request.getRemoteHost()); //:获得客户端电脑的名字,若失败,则返回客户端电脑的ip地址
System.out.println(request.getProtocol()); //:
System.out.println(request.getHeaderNames()); //:返回所有request header的名字,结果集是一个enumeration(枚举)类的实例
System.out.println("Protocol: " + request.getProtocol());
System.out.println("Scheme: " + request.getScheme());
System.out.println("Server Name: " + request.getServerName() );
System.out.println("Server Port: " + request.getServerPort());
System.out.println("Protocol: " + request.getProtocol());
System.out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo()); System.out.println("Remote Addr: " + request.getRemoteAddr());
System.out.println("Remote Host: " + request.getRemoteHost());
System.out.println("Character Encoding: " + request.getCharacterEncoding());
System.out.println("Content Length: " + request.getContentLength());
System.out.println("Content Type: "+ request.getContentType());
System.out.println("Auth Type: " + request.getAuthType());
System.out.println("HTTP Method: " + request.getMethod()); System.out.println("Path Info: " + request.getPathInfo()); System.out.println("Path Trans: " + request.getPathTranslated()); System.out.println("Query String: " + request.getQueryString()); System.out.println("Remote User: " + request.getRemoteUser()); System.out.println("Session Id: " + request.getRequestedSessionId()); System.out.println("Request URI: " + request.getRequestURI()); System.out.println("Servlet Path: " + request.getServletPath()); System.out.println("Accept: " + request.getHeader("Accept")); System.out.println("Host: " + request.getHeader("Host")); System.out.println("Referer : " + request.getHeader("Referer")); System.out.println("Accept-Language : " + request.getHeader("Accept-Language")); System.out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding")); System.out.println("User-Agent : " + request.getHeader("User-Agent")); System.out.println("Connection : " + request.getHeader("Connection")); System.out.println("Cookie : " + request.getHeader("Cookie")); System.out.println("Created : " + session.getCreationTime());
第二篇:nat123端口映射获取客户端访问真实用户IP方法
内网地址经过代理或NAT端口映射后,获取到的IP都是映射的那个转发IP,客户端访问的真正用户IP丢失了,怎么弄?怎么才能获取得到客户端访问真实用户IP?
解决方法:通过nat123端口映射处理,获取客户端真正用户IP。
Nat123自带客户端IP转发,只需要在对应应用程序中配置好相关参数即可。
参数配置都是按照.NET、PHP、DISCUZ标准设置,详细实现方法如下:
1. asp.net获取方法为:
string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
2.PHP获取用户真实IP方法为:$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
3.discuz论坛获取的具体方法为:
解决方法(Discuz x2.5至Discuz x3.1),其它版本如需知道请回复或者开新帖询问 打开文件\source\class\discuz\discuz_application.php 找到如下代码:
把函数
private function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s',
$_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
foreach ($matches[0] AS $xip) {
if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
$ip = $xip;
break;
}
}
}
return $ip;
}
修改成:
private function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s',
$_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
foreach ($matches[0] AS $xip) {
if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
$ip = $xip;
break;
}
}
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&
preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
return $ip;
}