成都网站建设
|
域名注册
|
虚拟主机
|
网站制作
|
网站案例
|
网站优化
|
网站推广
|
企业邮局
|
服务器租用
|
广告设计
首页
服务器租用
企业邮箱
虚拟主机
网站程序
营销推广
网站建设
域名注册
前端开发
网站备案
网站策划
|
网站建设
|
网站案例
|
虚拟主机
|
网站推广
|
云服务器
|
成都网站制作公司
|
php空间
|
独立IP空间
|
jsp虚拟主机
网站程序
java教程
asp程序
asp.net程序
vb编程
php程序
C#程序
服务器租用
web服务器
FTP服务器
服务器托管
服务器租用
vps主机服务器
企业邮箱
企业邮箱优势
企业邮箱设置
邮箱收发问题
邮箱功能讲解
邮箱其他问题
虚拟主机
主机购买
数据库
主机管理
FTP上传
主机续费升级
营销推广
seo优化
网站推广
搜索引擎
免费资源
网站建设
网站方案
网站改版
网页设计
网站维护
网站策划
域名注册
域名转入\转出
英文域名
通用网址
中文域名
域名解析
前端开发
html
jQuery
JavaScript教程
css
div+css
网站备案
备案流程指南
备案资料下载
备案常见问题
各省备案要求
移动互联网
wap手机网站
app应用开发
微网站
当前位置:
创新互联
>>
常见问题
>>
网站程序
>>
asp程序
>>
在ASP中操作HTTP报头方法分析之一
在ASP中操作HTTP报头方法分析之一
作者:创新互联 文章来源:网站程序部 点击数:
更新时间:2010-09-21
我们已经在几处见到
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/ratings
如何防范远程注入攻击以及ASP木马
:上一篇
Asp深度揭密之三
:下一篇
asp程序相关文章
如何防范远程注入攻击以及ASP木...
改mdb为asp所带来的灾难
Asp深度揭密之四
如何利用ASP实现邮箱访问
ASP中实现分页显示的七种武器
asp产生一个随机数Random...
ASP中一个表单多个按钮的实现方...
为什么ASP语言开发的网站更容易...
专注网站建设、网页设计、网站制作、企业网站建设——创新互联
移动互联网
|
网站备案
|
前端开发
|
域名注册
|
网站建设
|
营销推广
|
网站程序
|
虚拟主机
|
企业邮箱
|
服务器租用
|
热门搜索
服务电话:028-86922220 13518219792 公司地址:成都市太升南路288号锦天国际A幢10楼2号
企业邮箱:
service@cdxwcx.com
版权所有:成都创新互联科技有限公司 蜀ICP备09010846号
成都网站建设