页面都是静态html的
如何实现iframe框架页面只有自己的网站才能调用?
并且禁止所有其它网站调用,其它网站调用时最好能转到一个指定的url
请给出完整的js代码,谢谢!

解决方案 »

  1.   

    if(top.location != self.location)
       top.location = self.location;
      

  2.   

    <script>
    if(top.location.host != self.location.host)
       top.location = self.location;
    </script>把这段代码放到你想防止被调用的页面中去
      

  3.   

    <script>
    if(top.location.host != self.location.host)
       top.location = self.location;
    </script>把这段代码放到你想防止被调用的页面中去这楼的代理应该是能用的,好像是测试框架在当前页面的顶部对象吧..
      

  4.   

    <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;
    }
      

  5.   

    harryCom() 犯了同样的问题,你前面都提到了没有权限了,所以
    try{top.location.host}catch(exp){
    top.location = self.location;
    }
    还是无效的,还是没有top.location的设置访问权限
    这也是为什么一般仅仅是那个引入页面被跳转,而不是顶部页面跳转
    可能这样更好
    try{top.location.host}catch(exp){
    self.location = "一个自己定义的页面"
    }
      

  6.   

    xdspower(杂食菜熊) 麻烦你自己先试试,然后再告诉我错了好不好?我发的例子都是都是经过测试的,请注意,是访问top.location.host没有权限,而访问top.location是可以的,虽然跨域并不是所有属性都可以访问,但是也不是所有都不能访问啊!!想事情不能理所当然啊,当你否定别人的时候,先自己试试,不会浪费你很多时间的
      

  7.   

    我确实没有环境测试。
    如果有冒犯的地方还望见谅。
    此外我提一下我的一些意见,就是能完成这样的操作,我想用我后面的代码也可能更好。
    虽然别人可能存在一些盗链的行为,但你也不必把顶层窗口跳转到你的页面,而是把被盗页面跳转到一个申明页面,这样可能更友好。
    此外如果top.location能够读写,我就不知道为什么其子属性host会无效,因为host仅仅是location经过文本处理分析得到的也就是一个有效URL中协议标记后(如果http://或者ftp://等等)到路径标记/之间的一段字符串而已。
      

  8.   

    你说的这个也是一个方法,不过如果盗链的页面只是显示部分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 +"没有赋值权限")}
    }
    }
      

  9.   

    奇怪,大家没看清楚楼主的问题就回复了。
    大家提到的问题是可以防止别人用iframe盗链,但自己用iframe也同样会提示盗链的。