- 热门文章:
- · 使用用户名+密码的方式连接SQLSERVER
- · ASP.NET+AJAX解决网页打开等待问题(1)
- · ASP.NET+AJAX解决网页打开等待问题(2)
- · ASP .NET中维持ViewState研究
- · ASP.NET中用healthMonitor属性用法
- · 认识ASP.NET配置文件Web.config
- · 报表制作利器—Reporting Services(1)
- · 报表制作利器—Reporting Services(2)
- · 报表制作利器—Reporting Services(3)
- · ASP.NET 2.0中隐藏listbox的某一项
- · Asp.net(C#)给图片加上水印效果
- · ASP.net随机数应用实例
上一篇:关于解决商务平台ASP程序的源代码泄漏设想与思考 >>
在ASP中操作HTTP报头方法分析(1)
· 控制缓存和有效期。
· 创建状态和定制的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验证把它们发送回服务器(将在本系列后续部分看到验证方法)。
下一篇:使用用户名+密码的方式连接SQLSERVER >>
相关文章:
- · ASP.net随机数应用实例(2)
- · .NET WINFORM中使用本地SMTP SERVICE
- · ASP.net中用axWebBrowser中提交表单
- · 基于ASP.NET的自定义分页显示(1)
- · 用ASP.NET结合XML制作广告管理程序(1)
- · 用ASP.NET结合XML制作广告管理程序(2)
- · 使用ASP.NET程序来管理文件或目录的一种方案
- · 利用DataGrid编辑、修改、删除记录(1)
- · 利用DataGrid编辑、修改、删除记录(2)
- · 捕捉DataGrid的双击事件(C#版本)
- · 利用WebClient和WebRequest类获得网页源代码
- · 如何在域控制器上安装asp.net?
- · ASP.NET四种页面导航方式的比较与选择
- · 在ASP.NET下实现数字和字符相混合的验证码(C#)
- · 在网页中动态的生成一个gif图片(ASP.net)
- · 使用ASP.NET 2.0中的GridView控件(1)
- · 使用ASP.NET 2.0中的GridView控件(2)
- · ASP.NET虚拟主机安全漏洞解决方案(1)
- · ASP.NET虚拟主机安全漏洞解决方案(2)
- · ASP.NET虚拟主机安全漏洞解决方案(3)
- · ASP.NET虚拟主机安全漏洞解决方案(4)
- · 利用ASP.NET 2.0创建自定义Web控件(1)
- · 利用ASP.NET 2.0创建自定义Web控件(2)
- · 利用ASP.NET 2.0创建自定义Web控件(3)
- · 利用ASP.NET 2.0创建自定义Web控件(4)
- · 利用ASP.NET 2.0创建自定义Web控件(5)
- · 在ASP.NET下实现数字和字符相混合的验证码
- · 生成图象验证码函数
- · 在ASP.NET 2.0中使用页面导航控件(1)
- · 在ASP.NET 2.0中使用页面导航控件(2)
- · DataGrid基于Access的快速分页法(1)
- · DataGrid基于Access的快速分页法(2)
- · DataGrid基于Access的快速分页法(3)
- · DataGrid基于Access的快速分页法(4)
- · ASP.NET中对表单输入行有选择验证(1)
- · ASP.NET中对表单输入行有选择验证(2)
- · Javascript利用xmlhttp获得服务器时钟的方法
- · 用ASP编写的俄罗斯方块游戏
