首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用js能解决这个iframe问题吗?
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnroc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2007-07-04 15:04:47 楼主
    页面都是静态html的
    如何实现iframe框架页面只有自己的网站才能调用?
    并且禁止所有其它网站调用,其它网站调用时最好能转到一个指定的url
    请给出完整的js代码,谢谢!
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lihui_shine
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-04 15:19:181楼 得分:0
    纯js实现?关注
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wasuka
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2007-07-04 15:30:452楼 得分:0
    如果客户端禁用JS呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qf521lx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-05 08:36:033楼 得分:0
    if(top.location   !=   self.location)
          top.location   =   self.location;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnroc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-05 14:27:234楼 得分:0
    还是不懂呀,楼上能给出完整的代码吗?并且告诉我怎么用。谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qf521lx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-05 14:53:505楼 得分:0
    <script>
    if(top.location.host   !=   self.location.host)
          top.location   =   self.location;
    </script>

    把这段代码放到你想防止被调用的页面中去
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnroc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-05 21:10:156楼 得分:0
    试了,楼上的代码不管用:(
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • udbfvvtdj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-06 23:18:137楼 得分:0
    <script>
    if(top.location.host   !=   self.location.host)
          top.location   =   self.location;
    </script>

    把这段代码放到你想防止被调用的页面中去

    这楼的代理应该是能用的,好像是测试框架在当前页面的顶部对象吧..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zsm139
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-09 15:59:388楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • harryCom
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-09 16:29:289楼 得分:0
    <script>
    if(top.location.host   !=   self.location.host)
          top.location   =   self.location;
    </script>

    这个判断没有效果,假如self的域和top的域不一样,访问top.location.host就会出现没有权限错误,可以这样:
    try{top.location.host}catch(exp){
          top.location   =   self.location;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xdspower
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-09 22:51:5310楼 得分:0
    harryCom()   犯了同样的问题,你前面都提到了没有权限了,所以
    try{top.location.host}catch(exp){
    top.location   =   self.location;
    }
    还是无效的,还是没有top.location的设置访问权限
    这也是为什么一般仅仅是那个引入页面被跳转,而不是顶部页面跳转
    可能这样更好
    try{top.location.host}catch(exp){
    self.location   =   "一个自己定义的页面 "
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • harryCom
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-09 23:01:5711楼 得分:0
    xdspower(杂食菜熊)   麻烦你自己先试试,然后再告诉我错了好不好?我发的例子都是都是经过测试的,请注意,是访问top.location.host没有权限,而访问top.location是可以的,虽然跨域并不是所有属性都可以访问,但是也不是所有都不能访问啊!!想事情不能理所当然啊,当你否定别人的时候,先自己试试,不会浪费你很多时间的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xdspower
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-10 12:51:2112楼 得分:0
    我确实没有环境测试。
    如果有冒犯的地方还望见谅。
    此外我提一下我的一些意见,就是能完成这样的操作,我想用我后面的代码也可能更好。
    虽然别人可能存在一些盗链的行为,但你也不必把顶层窗口跳转到你的页面,而是把被盗页面跳转到一个申明页面,这样可能更友好。
    此外如果top.location能够读写,我就不知道为什么其子属性host会无效,因为host仅仅是location经过文本处理分析得到的也就是一个有效URL中协议标记后(如果http://或者ftp://等等)到路径标记/之间的一段字符串而已。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • harryCom
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-10 16:15:0413楼 得分:0
    你说的这个也是一个方法,不过如果盗链的页面只是显示部分iframe的内容,就不能完全显示一个申明的页面
    其实location是一个对象,但如果直接访问这个对象,其实就相当于访问location.href,其实上面直接赋值location不是规范的写法,应该是:top.location.href   =   "xxx "
    我刚刚用以下方法遍历了location的所有属性,发现只有location.href可以写,但不可以读,其他属性都是不能读和写,至于为什么这样,可能就是为了可以把顶层的页面可以跳转吧:
    try{top.location.host}catch(exp){
    for(var   o   in   top.location){
    try{top.location[o];alert( "属性 "+   o   + "有读取权限 ")}catch(exp){alert( "属性 "+   o   + "没有读取权限 ")}
    try{top.location[o]   =   "xxx ";alert( "属性 "+   o   + "有赋值权限 ")}catch(exp){alert( "属性 "+   o   + "没有赋值权限 ")}
    }
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xdspower
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-10 18:44:1214楼 得分:0
    我想再问一下你的测试环境中浏览器类型,你用了那些浏览器测试?
    关于申明页面内容问题,其实基本内容可以很少,表示顶层页面引用该页面是非法的就行了,这个页面可以保护链接,以提供更完整的声明。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnroc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-11 20:56:1115楼 得分:0
    多谢楼上几位高手的讨论。那现在测试好用的那一个完整代码是什么?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • panjy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-17 09:05:5816楼 得分:0
    奇怪,大家没看清楚楼主的问题就回复了。
    大家提到的问题是可以防止别人用iframe盗链,但自己用iframe也同样会提示盗链的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • panjy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-07-17 09:06:3817楼 得分:0
    我也遇到同样的问题,肯请有经验的说说。
    谢啦。
    修改 删除 举报 引用 回复