您的位置:首页 > 其它

如何在服务器端获取丰富的客户端信息?

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相关文章的基础上总结的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: