您好,欢迎来到菜鸟吧源码网-本站资源仅供学习与参考,禁止用于商业或违法行为!
  • 首 页
  • 下载APP
  • 公告:菜鸟吧APP于2024.9.15正式上线,请首页右上角进入下载,本站资源均来源于互联网及会员投稿发布,所有资源仅供学习参考研究使用,请勿商用或其它非法用途,商用请购买正版,否则产生一切后果由用户自行承担!谢谢!

     

    当前位置:主页 > 站长学堂 > discuz教程 >
    discuz不修改代码达到允许referer跳转到同顶级域名的解决方案
    时间:2019-10-20 14:53 作者:菜鸟哥 浏览:收藏 挑错 打印

    查看了discuz的drerferer方法.发现它不允许跳转到不同子域名的跳转.
    如果想跳转,可以修改这个方法,允许.但是这样处理会在以后升级时,又得要修改.比较麻烦.
    再想一下,discuz这样处理,简单的个人理解,就是假设有人想干干事.那在某个位置放置一个跳转到其它网站上的url,然后再把这个网站仿得跟之前使用的那个"正版"网站一样,就可以达到骗取密码之类的目的了.所以这是比较危险.或者这个方式还有更加多的利用.所以.它做了这个防止.
    现在我要说的是使用一个不变动的方式来增加跳转功能.

    在discuz的根目录下放置一个:referer.htm文件.内容如下,主要是为了能跳过去.且在这个文件中做一个跳的域名的判断.不符合就简单的跳到首页,因为?号会导致服务尝试查询解析,所以就不用了.还是用hash吧.

    复制代码
    代码如下:

    <script>
    /* by qidizi: discuz 不允许跳转到其它域名,现使用js处理,减少修改的工作量,允许跳到同顶域--不能跳到其它域,防止仿站之类的欺骗*/
    (function(){
    var topDomain = location.host.split('.');
    topDomain = topDomain[topDomain.length-2]+'.'+topDomain[topDomain.length-1];
    if (location.hash.length < 3) return location = 'http://' +location.host + '/';
    var referer = unescape(location.hash.replace(/#/g, '').replace('%_', '%'));
    if (new RegExp('^http\\:\\/\\/([^\\/]+\\.)?' +topDomain+ '\\/', 'i').test(referer)) {//同top domain
    location = referer;
    } else {
    location = 'http://' +location.host + '/';
    }
    })();
    </script>

    使用方式如下.使用js生成的一个退出链接,点击退出成功再会退出当前的这个页面.这样这个目的就达到了.
    + ' <a href="http://bbs.qidizi.net/member.php?mod=logging&action=logout&formhash=' +json['formHash']+ '&referer=/referer.htm' +escape('#') +escape(location).replace(/%/g, '%_')+ '" target="_self">退出</a>'
    ok,经过测试.此方案工作正常

    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
    我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法下载,联系站长索要。
    如有侵犯您的版权,请给我们来信:cainiaovip8@qq.com,我们尽快处理。

    Discuz应用中心安装插件提示“数据下载错误(105)”的解决办法Discuz应用中心安装插件提示“数据下载
    DISCUZ论坛添加页头及页尾背景图片的几种方法DISCUZ论坛添加页头及页尾背景图片的几
    Discuz! X3.4论坛标题字数突破80的限制解决方法Discuz! X3.4论坛标题字数突破80的限制