Foolproof way to detect if this page is INSIDE a cross-domain iframe

后端 未结 8 1090
梦如初夏
梦如初夏 2020-12-05 13:37

An answer to \"Foolproof way to detect if iframe is cross domain\" describes a method to test if an iframe on a page points to a same-domain or cross-domain page, working ar

相关标签:
8条回答
  • 2020-12-05 14:24

    Real cross-browser solution for posterity:

    function isCrossOriginFrame() {
      try {
        return (!window.top.location.hostname);
      } catch (e) {
        return true;
      }
    }
    
    console.log(isCrossOriginFrame());
    

    Tested on a decent swath of desktop and mobile browsers.

    https://jsfiddle.net/arzd4btc/3/

    0 讨论(0)
  • 2020-12-05 14:25

    For nested iframes : a recursive way to know if iframe (where this code is executed) is cross domain or not :

    function crosDomIfrm(win, data) {
            data = (typeof data === 'undefined')?{ref:win.document.location,isCD:false}:data;
            try { 
                if( win.document.referrer != '' ){
                    data.isCD = parseURL(data.ref) != parseURL(win.document.referrer);
                }
            } catch(e){}
            if ( (win.self !== win.parent) && !data.isCD ) { //I'm in iframe
                data = crosDomIfrm( win.parent, data );
            }
            return {ref:data.ref,isCD:data.isCD};
        },
    
    function parseURL(url) {
                    var a=document.createElement('a');
                    a.href=url;
                    return a.hostname;
                }
    
    0 讨论(0)
提交回复
热议问题