检测浏览器的版本
servervariables集合中,另外一个有用的值是用户浏览器的用户代理字符串。在“detecting the browser type”页面(browsertype.asp),使用servervariables集合中的“http_user_agent”值来获得用户代理字符串,一些脚本用来解析该信息并寻找生产厂家名称和浏览器版本。
<%
strua = request.servervariables(“http_user_agent”)
response.write “the user agent string is <b>” & strua & “</b>
”
if instr(strua, “msie”) then
response.write “to upgrade your browser go to “_
& “<a href=” & chr(34) & http://www.microsoft.com/ie/”_
& chr(34) & “>http://www.microsoft.com/ie/<a>
”
intversion = cint(mid(strua, instr(strua, “msie”) + 5, 1))
if intversion >=4 then
response.write “you can use microsoft dynamic html”
end if
else
if instr(strua, “mozilla”) then
if instr(strua, “compatible;”) = 0 then
response.write “your browser is probably navigator. you can “_
& “download the latest version of navigator from “_
& “<a href=” & chr(34) & http://home.netscape.com/”_
& “download/”& chr(34) & “>http://home.netscape.com”_
& “/download/</a>
”
intversion = cint(mid(strua, instr(strua, “/”) +1, 1))
if intversion >= 4 then
response.write “you can probably use.netscape dynamic html”
end if
else
strversion = mid(strua, instr(strua, “compatible;”) + 12)
strproduct = left(strversion, instr(strversion, “ “))
response.write “your browser is navigator-compatible. you can”_
& “search for the manufacturer using a search engine, such as”_
& “<a href=” & chr(34) _
& “http://www.altavista.digital.com/cgi-bin/query?q=”_
& strproduct _
& chr(34) & “>http://www.altavista.com/</a>
”
end if
end if
end if
%>
对ie 5.0和navigator 4.61的搜索结果分别不同,对于其他厂家的浏览器,可以得到一个链接在alta vista web站点自动开始搜索厂家的名称。
注意.netscape在用户代理字符串中不提供厂家的名称,因而无法绝对保证一个浏览器一定是navigator。
检测浏览器的语言
servervariables集合中另外一个有用的值是“http_accept_language”,它包含了一个当浏览器安装时指定的,或硬编码进用户的地区版本的语言代码。语言代码的例子有en-us(英国、美国)、de-at(德国、澳大利亚)和es-pe(西班牙、秘鲁)。
语言代码可以是一般的且省略方言标识:例如,在我们的站点wrox者,大批浏览者都是将en(英语)作为语言代码。
因此,可以检测语言代码并自动装载一个合适的特定地区或指定语言版本的页面。
strlocale = lcase(left(request.servervariables(“http_accept_language”),2))
select case strlocale
case “en”: response.redirect “http://uk_site.co.uk/”
case “de”: response.redirect “http://de_site.co.de/”
case “fr”: response.redirect “http://fr_site.co.fr/”
‘... etc
case else: response.redirect “http://us_sitel.com/”
end select
或者根据特定的方言,重定向页面:
strlocale = lcase(request.servervariables(“http_accept_language”))
select case strlocale
case “en-gb”: response.redirect “http://uk_site.co.uk/”
case “en-us”: response.redirect “http://us_site.com/”
case “es-pe”: response.redirect “http://es_site2.co.pe/”
‘...
case else: response.redirect “http://us_site1.com/”
end select
其他有用的servervariables集合的值
可以访问和使用servervariables集合中的任何一成员,控制asp页面响应一个请求的方式。可以检查一个浏览者访问站点时使用的是否是缺省端口80或还是另一个。在这个例子里,寻找通过端口443的访问——这个端口提供的是安全套接字层(secure socket layer,ssi)访问(和其他的协议),且将它们重定向到一个相应的页面。
if request.servervariables(“server_port”) = “443”) then
response.redirect “/securesite/default.asp” ‘secure user
else
response.redirect “/normalsite/default.asp” ‘non-secure user
end if
假如要求浏览者注册且由服务器验证(而不是允许他们在web服务器的iuser帐号下匿名访问,这个问题将在后面章节中详细讨论),可以查询用户名称,来判定正在与我们打交道的用户是谁,是否装载页面给该用户。例如,下面的这个代码将只向名为administrator的用户显示管理链接。
...
<a href=”dispcnfg.asp”>change display configuration</a>
<a href=”dispcolr.asp”>change display colors</a>
<a href=”keyboard.asp”>change keyboard configuration</a>
<%
if request.servervariables(“auth_user”) _
= ucase(request.servervariables(“server_name”)) & “\administrator” then
%>
<a href=”allusers.asp”>administer all users</a>
<a href=”usrlogon.asp”>administer logon information</a>
<%
end if
%>
...
注意asp不填写servervariables集合直到你访问其中的一个成员。首次访问该集合的一个成员将使iis得到它的全部,应只在需要时才使用servervariables集合。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器