当前位置: 首页 > 图文教程 > 网络编程 > ASP > Http_Referer,Server_Name和Http_Host

ASP
ASP调用ORACLE存储过程并返回结果集
用ASP实现网页BBS
关于Global.asa文件的深入研究与session变量失效提示的具体方法
简易ASP+注册系统
防护手册:如何防止ASP木马在服务器上运行
用Visual Basic实现多画面播放功能之二
如何增强ASP程序性能(1)
如何增强ASP程序性能(2)
如何增强ASP程序性能(3)
ASP备份数据库
二十八条改善 ASP 性能和外观的技巧
在Form域中Post大于100K的数据
如何使用ASP制作模似动态生长的表单?
Microsoft IIS 真的如此「不安全」吗?(1)
Microsoft IIS 真的如此「不安全」吗?(2)
Microsoft IIS 真的如此「不安全」吗?(3)
Microsoft IIS 真的如此「不安全」吗?(4)
Microsoft IIS 真的如此「不安全」吗?(5)
关于页面和代码分离
ServerVariables 对路径的操作

ASP 中的 Http_Referer,Server_Name和Http_Host


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 250 ::
收藏到网摘: n/a

刚才运行了一段代码,来查看Request.ServerVariables里面有多少值,看了一下,共50个!
代码<%=Request.ServerVariables.count%>
以前感觉Request.ServerVariables里的值很多,现在看看还是那么多,不过今天谈其中的一个值----HTTP_Referer
首先,我们先知道HTTP_Referer最常用的应用就是能够防止外部提交

下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER"):
1)  直接用<a href="">
2)   用Submit或<input type="image">提交的表单(POST或GET)
3)   使用JAvaScript提交的表单(POST或GET)

下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:
1)   从收藏夹链接
2)   单击主页或自定义的地址
3)   在浏览器中直接输地址
4)   使用JavaScript的Location.href或者是Location.replace()
5)   <%Response.Redirect%>
6)   <%Response.AddHeader%>或者是<mete http-equiv="refresh">转向
7)   用XML加载地址

显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的。关于它的具体用法我会在以后的文章中详细的介绍,同时还会介绍Request.ServerVariables("HTTP_HOST")Request.ServerVariables("SERVER_NAME")之间的区别。
敬请关注!

Request.ServerVariables里Server_Name与Http_Host之间有什么区别呢?
如果不仔细看,您应该看不出它们之间的区别。在网上搜了很多,还是也没有看懂,不过最后还是有一句话很是明白:Http_Host可以Request出非80的Server_Port,简单地说就是,Http_Host=Server_Name:Server_Port。

在以前发表过关于Http_Referer作用的文章,现在结合它来写一个ASP防止外部提交的函数

function ChkPost()
  dim server_v1,server_v2
  chkpost=false
  server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
  server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
  If Mid(server_v1,8,Len(server_v2))<>server_v2 then
    chkpost=False
  else
   chkpost=True
  end If
end function