获取页面来源URL ,源页面URL,Request.UrlReferrer为空的问题

       最近遇到获取源页面URL遇到问题,整理了一下

获取页面来源URL,对于访问来源统计,防盗链等地方,用处很大。一般我们用 Request.UrlReferrer 方法获取源页面URL但是对于页面通过IE

1. window.open,

2. window.location.href,

3.location.replace(),等方式跳转时,获取为空值,只有在<a href=>有效。据说 IE浏览器referrer清空了。所以获取不到

 

解决方案

1. 对于window.location.href,location.replace()跳转方式,思路是这样,通过js创建一个a标签代替跳转

如代码(源页面代码)

  Javascript代码

复制代码
function Redirect(url) {
    //获取浏览器用户代理
    var userAgent = navigator.userAgent.toLowerCase();
    var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
    var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
    //如果是IE浏览器
    if (is_ie) 
    {
        //创建A标签
        var referLink = document.createElement('a');
        referLink.href = url;
        document.body.appendChild(referLink);
        //模拟点击
        referLink.click();
    }
    else 
    {
        //其他浏览器不变
        location.href = url;
    }
  } 
复制代码

HTML调用

<a onclick="Redirect('Default1.aspx')"> 自改代码 </a>

(目标页面代码)   

   获取可以直接用Request.UrlReferrer 得到源页面

2.当window.open时,因为window.open是唯一可以打开一个没工具栏,状态栏的页面的方法,所以某些情况下是不可替代的
   (源页面代码)

 Javascript代码

function Redirect(url)
   {
     //打开一个无状态栏的页面
     window.open(url,'','toolbar=no, menubar=no,  scrollbars=yes, resizable=yes, location=no, status=no');
   }

HTML调用

  

<a onclick="Redirect('Default1.aspx')"> 自改代码 </a>

 (目标页面代码)

function getFrom()    
        {    
            //获取源页面地址;window.opener 为获取window.opener源页面的BOM对象
            var url =window.opener.location;  
            //获取本页面地址
            var localUrl=window.location.href.toString();  
            window.alert("来源地址:"+url+"   本地址:"+localUrl); 
       }  

 

 

posted @   巴顿道儿  阅读(2176)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件
点击右上角即可分享
微信分享提示