如何在服务器端获取丰富的客户端信息?
2006-04-02 18:52
197 查看
在Web开发中,我们面对可能是各式各样的客户端。而不同的浏览器、相同浏览器的不同版本支持不同的功能。在Web应用程序中,我们可能需要确定用户正在使用哪种类型的浏览器查看页,并且可能需要确定该浏览器是否支持某些特定功能。因此,我们经常需要获取客户端的信息,比如浏览器版本、平台版本、是否支持DHTML等,进而对客户端请求作出最大的适应性响应以满足兼容性;
我们知道,ASP.NET 本身可以自动确定客户端信息,根据该信息为 ASP.NET 服务器控件呈现适当的 HTML 标记和脚本代码;
同时ASP.NET也为开发人员提供了丰富的API,以获取客户端信息,主要通过HttpRequest对象的Browser和UserAgent属性公开的实用类库。其中Browser属性公开了HttpBrowserCapabilities对象,通过该对象我们能够访问到丰富的客户端信息,而UserAgent只是提供了一串简单的从浏览器传递到服务器的用户代理(一般就是浏览器)信息(默认情况下ASP.NET通过该信息来确定浏览器的功能,并根据配置文件(asp.net1.x)和浏览器定义文件(asp.net2.x)中的代理项来匹配用户代理信息);而HttpRequest对象本身需要通过HttpApplication、HttpContext、Page 和 UserControl 类的 Request 属性公开。
这些使用类库,在开发自定义控件的时候,非常的有用。我们可以根据客户端特性,监测其是IE还是Firefox或者Netscape来发送不同版本的HTML、DHTML控件呈现。
HttpBrowserCapabilities在asp.net1.x 的时候已经得到支持,在asp.net2. 0又得到了非常的扩充,特别是为了满足ClientCallback(客户端【无刷新】回调),以及MS自己的AJAX库Altas,比如当需要确定客户端是否十分支持AtiveX控件、CSS、ClientCallback和XMLHttp时,可以使用如下代码:
public partial class ClientCallback_DemoBrowser : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Web.HttpBrowserCapabilities bCaps;
bCaps = Request.Browser;
string str = "";
str += String.Format("Supports ActiveX controls: {0}",
bCaps.ActiveXControls) + "<br>";
str += String.Format("Supports CSS: {0}",
bCaps.SupportsCss) + "<br>";
str += String.Format("Supports callback: {0}", //实现ClientCallback时需要判断
bCaps.SupportsCallback) + "<br>";
str += String.Format("Supports receiving XML over HTTP: {0}", //实现ClientCallback时需要判断
bCaps.SupportsXmlHttp) + "<br>";
Response.Write(str);
}
}
关于HttpBrowserCapabilities类的详细信息可以参考MSDN:
http://msdn2.microsoft.com/zh-CN/library/system.web.httpbrowsercapabilities(VS.80).aspx。
说明:本文应用平台是.net framework 2.0,是在参考MSDN相关文章的基础上总结的。
我们知道,ASP.NET 本身可以自动确定客户端信息,根据该信息为 ASP.NET 服务器控件呈现适当的 HTML 标记和脚本代码;
同时ASP.NET也为开发人员提供了丰富的API,以获取客户端信息,主要通过HttpRequest对象的Browser和UserAgent属性公开的实用类库。其中Browser属性公开了HttpBrowserCapabilities对象,通过该对象我们能够访问到丰富的客户端信息,而UserAgent只是提供了一串简单的从浏览器传递到服务器的用户代理(一般就是浏览器)信息(默认情况下ASP.NET通过该信息来确定浏览器的功能,并根据配置文件(asp.net1.x)和浏览器定义文件(asp.net2.x)中的代理项来匹配用户代理信息);而HttpRequest对象本身需要通过HttpApplication、HttpContext、Page 和 UserControl 类的 Request 属性公开。
这些使用类库,在开发自定义控件的时候,非常的有用。我们可以根据客户端特性,监测其是IE还是Firefox或者Netscape来发送不同版本的HTML、DHTML控件呈现。
HttpBrowserCapabilities在asp.net1.x 的时候已经得到支持,在asp.net2. 0又得到了非常的扩充,特别是为了满足ClientCallback(客户端【无刷新】回调),以及MS自己的AJAX库Altas,比如当需要确定客户端是否十分支持AtiveX控件、CSS、ClientCallback和XMLHttp时,可以使用如下代码:
public partial class ClientCallback_DemoBrowser : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Web.HttpBrowserCapabilities bCaps;
bCaps = Request.Browser;
string str = "";
str += String.Format("Supports ActiveX controls: {0}",
bCaps.ActiveXControls) + "<br>";
str += String.Format("Supports CSS: {0}",
bCaps.SupportsCss) + "<br>";
str += String.Format("Supports callback: {0}", //实现ClientCallback时需要判断
bCaps.SupportsCallback) + "<br>";
str += String.Format("Supports receiving XML over HTTP: {0}", //实现ClientCallback时需要判断
bCaps.SupportsXmlHttp) + "<br>";
Response.Write(str);
}
}
关于HttpBrowserCapabilities类的详细信息可以参考MSDN:
http://msdn2.microsoft.com/zh-CN/library/system.web.httpbrowsercapabilities(VS.80).aspx。
说明:本文应用平台是.net framework 2.0,是在参考MSDN相关文章的基础上总结的。
相关文章推荐
- ASP.NET中如何获取客户端浏览器信息
- jsp中如何获取客户端的浏览器和操作系统信息
- ASP.NET获取客户端、服务器端基础信息集合
- Extjs练习——服务器端获取信息填充客户端表单,注意Radio以及Checkbox值的传递
- 获取客户端及服务器端信息
- 如何编写JavaScript脚本,在客户端获取或变更服务器端控件的值及ID
- ASP.NET获取客户端、服务器端基础信息
- 【转】C#获取客户端及服务器端主机信息及其获取IP地址
- ASP.NET获取客户端、服务器端的信息
- php如何获取服务器端的一些信息
- 如何获取登录Oracle数据库的客户端IP等会话信息
- asp.ne如何使用javascript去验证客户端信息,如果验证成功则送往服务器端处理,否则在客户端提示用户(不返回到服务器端处理)
- ASP.NET----获取客户端浏览器信息,获取服务器端主机名和 IP
- JSP如何获取客户端的浏览器和操作系统信息
- ASP.NET中如何获取客户端浏览器信息
- .net中如何在服务器端获取客户端的html标签控件。
- .NET获取客户端、服务器端基础信息
- php如何获取服务器端mac与客户端mac地址
- jsp中如何获取客户端的浏览器和操作系统信息
- 如何获取客户端上次请求的 URL 的信息