zoukankan      html  css  js  c++  java
  • HTTP_REFERER是什么 与 Request.ServerVariables("HTTP_REFERER")的用法(防外连接)

    简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

    Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。

    Request.ServerVariables("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加载地址

    防外链代码例子(C#):
    if (Request.ServerVariables["HTTP_REFERER"] == null || !Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString()))
             {
                 Server.Transfer("Error.aspx");
             }

    ===========================================================

     

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

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

    显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子:
    ref.asp
    <%
    response.write "You came from: " & request.servervariables("http_referer")
    %>

    ref.htm
    <%
    Response.AddHeader "Refresh", "10;URL=ref.asp"
    %>

    <meta http-equiv='refresh' content='10;URL=ref.asp'>

    <form method=GET action=ref.asp name=getform>
    <input type=submit value=' Go there (GET) >> '>
    <input type=image style='cursor:hand'>
    </form><p>
    看看上面的代码会得到什么的结果.
    <form method=POST action=ref.asp name=postform>
    <input type=submit value=' Go there (POST) >> '>
    <input type=image style='cursor:hand'>
    </form><p>

    <a href='ref.asp'>直接链接</a><p>

    <a href='#' onclick='window.location.href="ref.asp";return false;'>Javascript location</a><p>

    <a href='#'onclick='window.location.replace("ref.asp");return false;'>Javascript replace</a><p>

    <a href='#' onclick='document.getform.submit();return false;'>javascript GET</a><p>

    <a href='#' onclick='document.postform.submit();return false;'>javascript POST</a>

    Request.ServerVariables(HTTP_REFERER)的工作方式

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    Sqlserver 实际开发中表变量的用法
    Python Day 20 面向对象 (面向对象的组合用法,面向对象的三大特性
    Python Day 19 面向对象(初识面向对象)
    Python Day 18 常用模块(模块和包)
    Python Day 17 常用模块(常用模块一 时间模块,random模块,os模块,sys模块,序列化模块)
    Python Day 15 函数(递归函数、二分查找算法)
    Python Day 14 函数(内置函数,匿名函数(lambda表达式))
    Python Day 13 函数(迭代器,生成器,列表推导式,生成器表达式)
    Python Day 11 + Python Day 12 函数(函数名的应用,闭包,装饰器)
    Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)
  • 原文地址:https://www.cnblogs.com/Athrun/p/1445314.html
Copyright © 2011-2022 走看看