折叠 编辑本段 简介
折叠 编辑本段 防外链代码例子
if (Request.Serv倒错静丝题持每我院erVariables["HTTP_REFERER"] == null || !Request.Serve义仍济种rVariables["HTTP_REFERER"].ToStrin杀沙齐吧标艺属药g().Contains(Request.ServerVariables["HTTP_HOST"].ToString()))
{
Server.Transfer("Error.aspx");
}
下列情况是从浏览器的地址栏正常取得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) <%R鸡球言本钢古精便春呀财esponse.AddHeader%>或者是<mete http-equiv="refresh">转向
7) 用XML加载地址
显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子:
r义选多计转心洲诗ef.asp
<%
response.write "You came from: " & request.servervariables("http_referer")
%>
ref.htm
<%
Response.AddHeader "Refresh", "10;URL=ref.asp"
%>
<meta http-equiv='refresh' conten着最食t='10;URL=ref.asp'>
<form metho屋按轴既二起林犯体脚d=GET action市东向与它越江仅=ref.asp name=getform>
<input type=submit value=' Go there (GET) >> '>
<input type=image style='cursor:hand'>
</form><p>
看看子圆提帮命上面的代码会得到什么的结果.
<form met革续hod=POST action=ref.asp name=postform>
<input type=sub导承宽mit value=' Go there (POST) >> '>
<input type=image style='cu温rsor:hand'>
</form><p>
<a href='ref.asp'>直接链接</a><p>
<a href='#' 'window.location.href="ref.as参乐源p";return false;'>Javascr随家更ipt location</a><p>
<a href='#''window.location.replace("ref.a效歌夜督乡先海写英岩回sp");return false;'>Javascript replace</a><p>
<a href='#' 'document.getform.submit();return false;'>javascript GET</a><p>
<a href='#' 'document.postform.submit();return false;'>javascript POST</a>
Request.ServerVariables(HTTP_REFERER)的工作方式
在J月权钟油底SP中获取REFERER的方式是:request.getHeader(妒河火站"REFERER");
在PHP中获取REFERER的方式是:$_SERVER['HT构飞队丝女期青TP_REFER管业买仅术粉组项饭伟木ER'];