zoukankan      html  css  js  c++  java
  • Request.UrlReferrer为空的问题

    Request.UrlReferrer为空的问题

     

    今天在开发时遇到了一个问题,在用Request.UrlReferrer获取上一页面的地址时发现该对象为空(IE下,FF下可以得到对象),于是上网搜索发现:

    什么时候可以使用此方法,什么时候此属性的值为空,只有知道了其使用场合,才能更加有效的使用它,下面对其使用情况小结如下:

    下列情况下,此属性值是有效的:

    (1)直接使用<a href>链接;

    (2)通过表单提交的方式,或者说是有PostBack动作的按钮,也或者是通过客户端脚本进行了form.submit()动作;

    下面这些情况,此属性返回空值:

    (1)通过IE的收藏,历史,最近链接,首页,或者是在地址栏中直接输入当前页面地址等方式;( ^_^,有些啰嗦 );

    (2)使用了location.href or location.replace()等客户端脚本方法导航到了当前页面;

    (3) 使用Response.Redirect / Server.Transfer方式,这个小解释下,如果是在上一页面的Page_Load直接使用了 Response.Redirect("Page2.aspx");或者Server.Transfer("Page2.aspx"),那么在 Page2.aspx中的Request.UrlReferrer是null,但如果是通过服务器按钮进行的,返回值是正确的;

    (4)使用Response.AddHeader (302) or <meta http-equiv=refresh>转到的页面中;


    原来我的转向按钮在update panel里面所以不能用事件redirect导向,所以我用button的onclinetclick()里写的location.href方法转向这样浏览器认为不是页面跳转过来的所以Request.UrlReferrer为空,于是换成<a>标签连接跳转,一切正常了!

    --------------------------------------------

    这个东东也值得记录一下了。
    1。防止盗链和直接打开某页。
    protected void Page_Load(object sender, EventArgs e)
    {
                          if(Request.UrlReferrer==null)
                          {
                                Response.End();
                          }
                          if(Request.UrlReferrer.Authority!=Request.Url.Authority)
                          {
                               Response.End();
                          }
    }

  • 相关阅读:
    利用flashBack恢复误删除(delete)的表数据
    [原创] [YCM] YouCompleteMe安装完全指南
    关于dll的一点收获
    could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'
    化不利为有利
    突破软件试用期的"土方法"
    网络求职的成功率一般2个月是发1000份简历,有8份面试,2份成功,一个是你不想去的,另一个可能是你相对满意的。
    一个简易的dota改键助手
    linux 版本控制服务-git
    django modelform模块
  • 原文地址:https://www.cnblogs.com/HeShui/p/3656768.html
Copyright © 2011-2022 走看看