首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 认证考试-> 全国等级考试
在ASP中操作HTTP报头方法分析-ASP教程,ASP技巧
作者:网友供稿 点击:27
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
我们已经在几处见到asp如何创建或修改在响应页面请示时被发送到客户的http报头。在response对象中有几个属性和方法可帮助我们做到一点。下面是一些报头方法:

  · 控制缓存和有效期。

  · 创建状态和定制的http报头。

  · 指定mime类型或内容类型。

  · 添加pics标签。

  接下来将简要地研究每一个方面。可在“response object”主页(show_response.asp)上,单击相关属性名或方法名,来检查我们所说的属性和方法。

  1. 缓存和“到期”asp网页

  用户的浏览器以及他们和服务器这间的任一代理服务器,都可以缓存html和用asp创建的网页。当用户随后请求页面时,浏览器就发送一个“最新修改”的请求到服务器(使用一个包含缓存版本的日期的http_if_modified_since报头),询问网页是否已被修改。

  若没有被修改,服务器应用状态码和消息“304 not modified”来响应,浏览器将使用缓存的内容而不会通过网络下载一个副本。若已经存在已修改的版本,它就会与“200 ok”状态码和消息一道被发送出去。

  1) response.cachecontol属性

  其他的一些因素也会影响这一处理过程。然而,任一被网页使用的网络路由内的代理服务器(一般位于客户机端),能被通过设置response.cachecontrol属性为private来放弃缓存网页。在asp 3.0中对asp网页这是缺省的,不用设置。但在网页为个别访问者特别定制时尤其有用。这可以阻止别的在同一网络上的用户进入同一网页。当cachecontrol的属性值被设定为public时,允许服务器缓存网页。注意,一些代理服务器可能表现得不尽相同,或忽视或越过这个报头。

  在ie4中,在代理服务器缓存可用时,有可能得到一个虚假的“this page has expired”消息。我们已提供了一个网页(expiretest_form.asp),可以通过自己的代理服务器在网络上做试验,来检查这一属性的影响。可以通过在“response object”主页中单击“response. cachecontrol”链接来显示这个网页。如下图所示:

  这一页面提交到expiretest_result.asp网页时,能够设置response.cachecontrol属性,然后在网页中插入值和脚本被执行的时间:

<%
if request.form(“public”) = “on” then ‘cache-control check box was ticked
 response.cachecontrol = “public”
else
 response.cachecontrol = “private”
end if
%>
<html>
...
cache-control is: <b><% = response.cachecontrol %></b><p>
value in text box is: <b><% response.write request.form(“textbox”) %>
<%
response.write right(“0” & hour(now),2) & “:” & right(“0” & minute(now),_
& 2) & “:” & right(“0” & second(now),2)
%></b>

  通过单击浏览器上的“back”和“forward”,能看到代码是自动执行还是使用缓存的副本。

  2) response.expires和response.expiresabsolute属性

  控制缓存的网页存放时间的两个属性为response对象的expires和expriesabsolute属性。response.expires定义了风页在从缓存区被丢弃前应保持有效的时间长度,以创建以来的分钟数形式表示。expiresabsolute属性为到期时间设置了一个绝对的日期和时间。

  我们提供一个命名为addheaders_form.asp的例子网页,用于演示如何使用这些属性。在“response object”主页中单击对这两种属性的链接。

  在得到的页面中,可加入自己定制的http报头,并可设置一些影响响应的http报头的多种属性。在“提交查询内容”按钮上单击时,页面show_headers.asp在返回的数据流中添加所选的报头,然后显示用来完成此操作的代码,显示相应的执行时间,可用来检查页面是被缓存还是被再次执行。

  show_headers.asp网页中的代码创建和添加http报头,程序如下:

<%
‘write http headers before any other output
if request.form(“expires”) = “on” then _
 response.expires = request.form(“expires_value”)
if request.form(“expiresabs”) = “on” then _
 response.expiresabsolute = request.form(“expiresabs_value”)
if request.form(“lastmod”) = “on” then _
 response.addheader “last-modified”, cstr(request.form(“lastmod_value”))
if request.form(“pragma”) = “on” then _
 response.addheader “pragma”, cstr(request.form(“pragma_value”))
if request.form(“refresh”) = “on” then _
 response.addheader “refresh”, cstr(request.form(“refresh_value”))
if request.form(“addheader”) = “on” and len(request.form(“addheader_name”)) then _
 response.addheader cstr(request.form(“addheader_name”)), _
  cstr(request.form(“addheader_value”))
if request.form(“status”) = “on” then _
 response.status = request.form(“status_value”)
%>
<html>
...
... show code and execution time
...

  其余部分仅仅是显示已被执行的代码和执行时间。读者会注意到包含在网页中的定制的报头“pragma”(至今我们还没讨论过)。一些(先前的)代理服务器使用它作为网磁是否应被缓存的指示。缺省是网页被缓冲,除非接受到http报头“pragma=no-cache“。

  2. 创建状态码和定制的http报头

  可使用先前在实例网页中所看到的response对象的addheader方法来创建自己的状态码或自己喜欢的定制的报头。这一方法需要两个参数:http报头名称或一个包含其值或分配给它的值的字符串。作为一个例子,下面的代码在页面中添加refresh报头:

response.addheader “refresh”, ”60;url=newpath/newpage.asp”

  这等同于客户机端<meta>元素:

<meta http-equiv=”refresh”, “60;url=newpath/newpage.asp”>

  换句话说,也可配合status属性使用addheader方法使浏览器载入一个新的页面:

response.status = “302 object moved”
response.addheader “location”, “newpath/newpage.asp”

  这等同于使用response.redirect方法:

  response.redirect “newpath/newpage.asp”

  response.status属性可被用来发送一些所需要的状态消息,例如添加如下几行:

  response.status= “401 unauthorized”

  response.addheader “www-authenticate”, “basic”

  强制浏览器显示一个用户名/口令对话框,然后使用basic验证把它们发送回服务器(将在本系列后续部分看到验证方法)。

  3. mime类型和内容类型

  当我们想向浏览器发送一个动态创建的字符串,而且它们自己提供给浏览器时没有直接指明内容类型,而是提供表示是否是磁盘文件的扩展名时,response.contenttype是非常有用的。除非特别指定,所有asp创建的网页缺省都为“text/type”。内容类型的标识符是mime类型(mime代表multi-purpose internet multimedia extension或multi-pupose internet mail extension,通常依据上下文来定)。

  例如,若发送到客户的数据注解是通过从数据库读二进制值创建的图片,就需要在发送任何内容之前添加合适的content-type报头:

response.contenttype = “image/jpeg”

  假如从一个数据库创建一个xml文件,使用miem类型“text/xml”;并且如果正在创建一个文本文件可以在文件编辑器中显示或作为一个磁盘文件在客户上被存储起来,使用“text/text”。

  4. 添加pics卷标

  respnse.pics属性仅仅是添加一个pics(platform for internet content system)卷标到页面上,方式与通常用<meta>标记所用的方式相同:

quot = chr(34)
strpicslabel = “(pics-1.0” & quot & “http://www.rsac.org/ratingsv01.html”_
& quot & “ 1 gen true comment “ & quot _
& “rsaci north america server” & quot & “ for “ & quot _
& “http://yoursite.com” & quot & “ on “ & quot _
& “1999.08.01t03:04-0500” & quot & “ r (n 0 s 0 v 2 l 3))”
response.pics(strpicslabel)

  这段代码添加了如下的pics卷标:

(pics-1.0 “http://www.rsac.org/ratingsv01.html” 1 gen true comment “rsaci
north america server” for “http://yoursite.com” on “1999.08.01t03:04-0500”
r (n 0 s 0 v 2 l 3))

  要得到关于pics的更多的信息,或了解更多的定义页面内容的方式,请检索http://www.rsac.org/站点。

  在internet service manager中定义报头

  在本系列文章的第一部分,已经说明了如何在internet service manage(mmc插件)应用程序中设置每个web网站和iis 5.0目录的属性,这就定义了使用此站点或目录资源发送到客户机的所有请求的http报头,也就提供了使用每个网页中的asp脚本代码设置这些属性的替代方法。

  在web站点或目录上右击鼠标并选择“properties”,在其对话框的“http headers”选项卡中,可设置页面内容有效期的相对时间或绝对日期,定义定制的报头,创建pics内容等级标签,也可以通过mime类型映射来定义内容类型。

  那么可以看到已创建了自定义的refresh http报头,应用于从此目录载入的所有网页。即每一分钟自动地重载(刷新)一次(对于显示棒球比赛的最近比分是非常理想的,但对服务器而言负担太重了)。

  要在“mime map”框中添加自定义的内容类型映射,只需在“properties”主对话框中单击“file types”按扭把它们添加到清单中即可。

  当使用http报头开始试验时,你很快会发现不是所有的浏览器表现都相同,许多浏览器以不同的方式响应不同的http报头,使得可靠地建立一个普遍适用的原则有时极为困难。

  2. 使用客户证书

  假如设立了一个安全的web网站或部分内容具有安全机制的网站,可安装一个数字服务器证书,通过允许访问者使用证书中的加密的细节,来验证服务器。每一次对该站点或目录的页面请求,服务器都将发送证书的一个副本,浏览器可检查这个副本以确定正在和谁交谈。
同样,也可设置服务器,要求用户在进入网站时提供一个有效的数字证书。他们可从很多来源获得此证书,例如verisign(http://www.verisign.com)或thawte consulting(http://www.thawte.com)。读者将在第25章看到这一处理过程的细节。

  这些情况都使用了request对象的clientcertificate集合的值,本章的实例代码中,已包含了一个显示用户如何使用些集合值的一些方法的页面。

  这一网页被命名为showcert.asp,而且其所做的一切就是遍历clientcertificate集合显示其包含的所有值。可使用以前经常使用的简单代码来完成它,唯一的不同之处就是建立一个html表以容纳结果,并将其截为每60个字符一组。

<tabel cellpadding=0 cellspacing=0>
<%
for each keyitem in request.clientcertificate()
 stritemvalue = request.clientcertificate(keyitem)
 if len(stritemvalue) > 90 then stritemvalue = left(stritemvalue, 60) & “..etc.”
 response.write “<tr><td>” & keyitem & “ = “ & stritemvalue & “</td></tr>”
next
%>
</table>

  使用客户证书重定向

  一旦要求所有访问网站或部分网站的浏览者给出的其客户证书,就可以使用其包含的信息来制作我们为此用户创建的网页。例如,可使用他们的证书的organization条目来自动使他们重定向到该网站的指定部分,使别的访问者重定向到别的地方:

if request.clientcertificate(“subjecto”) = “wrox press inc” then
 response.redirect “/wrox_staff/default.asp” ‘wrox staff site
else
 response.redirect “/public/default.asp” ‘normal public site
end if

  相应地,可使用country条目来使访问者重定向到一个相应的网站:

select case request.clientcertificate(“subjectc”)
 case “uk”: 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/”
 ‘... ect.
 case else: response.redirect “http://us_site.com/”
end select

  3. 读写二进制数据

  有两个方法提供了对从浏览器发送到服务器的http数据流和从服务器返回到浏览器的数据流的二进制数据访问。request.binaryread方法可得到指定要读取的字节数的参数,并返回变体类型的数组,其中包含从请求的post段中得到的字节(例如在asp的form集合中数据)。下面的程序读数据的头64个字节:

varcontent = request.binaryread(64)

  假如使用了binaryread方法,以后就不能访问asp的request.form集合。同样,一旦我们采用任何方式引用了request.form集合,就不能使用binaryread方法。

  把二进制数据写进asp创建的响应流中也是可能的,可采用binarywrite方法。需要给其提供想写到客户的字节的变体类型数组:

response.binarywrite(varcontent)

  这些方法都很少使用,除非从一个数据库创建非html源才用到这些方法。使用的一个实例就是从数据库读取组成图像的字节,并使用binarywrite方法把它发送到客户。

  4. 创建定制的日志消息

  假如设置了服务器,以w3c extended log file format格式将请求记录到一个文本文件,可使用response.appendtolog方法在日志文件条目的结尾处添加一条消息字符串。若想为特定的网页存储一些值或消息,或在脚本中出现了特定的情况时,这种方式是非常有用的。

  例如,通过的intranet的“stationary order”应用程序,可以记录超过特定的条目数目的雇员的部门号码:

...
if intitemcount > 25 then
 response.appendtolog “large order from ‘” & strdept & department.”
end if
...

  设置扩展的日志

  要使用appendtolog方法,必须激活w3c extended log file format日志设置。该设置方法是,进入properties对话框中的web site选项卡,选中enable logging复选框,选择w3c extended log file format并单击properties按钮,如下图所示:

  在出现的extended logging properties对话框中,可选择想包括进日志文件的条目。确保选中uri stem,否则appendtolog方法将失败。

  我们提供了一个试图在日志文件中写入一个条目的简单实例页面,可从request object主页(show_request.asp)中的appendtolog方法链接处打开它。这一页面所做的全部工作就是创建一个包含当前日期和时间的简单字符串,然后执行appendtolog方法:

strtoappend = “page executed on ” & now
response.appendtolog strtoappend

  小结

  本文已经开始了对asp 3.0的研究,而且我们也看到了asp 3.0如何与internet informateion server 5.0共同工作,以提供一个易用的、高效的创建动态web网页和web应用程序的方法。当然,仍有一些地方需要去研究,本章仅仅是学习了asp内置的两个最基本的对象。
这两个最基本的对象是request和response对象,允许我们访问和使用作为客户机/服务器会话一部分的值,无论用户何时从web网站请求和载入一个网页或资源,这种会话就会进行,意味着request对象能够提供对用户请求的全部内容的访问,同时response对象允许创建和修改服务器发回的响应。

  这些对象能够通过集合和属性揭示会话的各个部分,并提供了多个能用来检索和修改各段的方法。假如把它们当作分解用户请求和使用相应的内容创建响应的工具,这有助你理解究竟发生了什么。这也将有助于理解各种方法如何影响客户、服务器和正在创建的网页。


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·VisualC#中MDI窗体初步-.NET教程,C#语言
·2004年全国计算机等级考试二级vb全真上机试题解析
·全国计算机等级考试一级ms office考试(样题)
·java生成JPEG 图像文件-JSP教程,Java技巧及代码
·全国计算机等级考试二级access考试大纲
·全国计算机等级考试一级b考试大纲
·大文件上传研究-ASP教程,ASP应用
·全国计算机等级考试二级c语言考试大纲
·C#字符串的使用笔记-.NET教程,C#语言
·c#实现类似于SqlServer视图设计器的可浮动窗体-.NET教程,C#语言
最新文章
·利用c#远程存取access数据库_c#应用
·dreamweaver简单描述制作网页的基本步骤_dreamweaver教程
·fireworks制作波普网点画面特效_fireworks教程
·如何提高垃圾站点gg ad广告单元点击价格_网赚技巧
·谈百度联盟和google adsense广告的均衡优化_网赚技巧
·google adsense 广告功略之三定理_网赚技巧
·为什么网站要先做小众_站长心得
·针对地方门户网站运营推广的经验分析_站长心得
·如何做网站的搜索引擎优化?_站长心得
·如何正规的快速建立赚钱的网站_google推广
相关主题
  • 在ASP中使用脚本语言-ASP教程,ASP应用
  • 在ASP中自动创建多级文件夹的函数(使用FSO)-ASP教程,ASP技巧
  • 在ASP中轻松实现记录集分页显示-ASP教程,ASP技巧
  • 在ASP中访问和更新Cookies集合-ASP教程,ASP技巧
  • 在ASP中利用“正则表达式” 对象实现UBB风格的论坛-ASP教程,正则表达式
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭