V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
v2gf

能通过 js 或者 jquery 检测到 iframe 内的网页是否使用了同源策略吗?

  •  
  •   v2gf · Mar 7, 2018 · 4303 views
    This topic created in 2976 days ago, the information mentioned may be changed or developed.
    要通过 iframe 打开别人的网页,但是有的网站使用了同源策略,导致内容打不开,现在想知道有没有办法知道 iframe 的页面是否使用了同源策略,然后根据判断去做处理
    Supplement 1  ·  Mar 7, 2018
    一旦跨域,不管有没有设置 x-frame-options,都无法读取到 iframe 里面的内容了,既然前台浏览器不能检测,只能在后台做,我的做法是页面加载完成之后,把要用 iframe 打开的 url 用 Ajax 传到后台去,用 HttpUnit 打开,获得 response header,判断是否有 x-frame-options,把判断结果传回前台做处理。之所以用 HttpUnit,是因为要打开的网站会多次跳转。
    7 replies    2018-03-08 13:35:35 +08:00
    AV1
        1
    AV1  
       Mar 7, 2018
    随手写的,仅供参考

    /**
    * 检查 iframe 是否跨域
    * @param iframeElement {HTMLIFrameElement}
    * @return {Boolean}
    */
    var isCrossorigin = function (iframeElement){
    var crossOrigin;
    try{
    // 如果不跨域,contentDocument 就存在
    crossOrigin = !iframeElement.contentDocument;
    }catch(er){
    // 如果跨域,就会抛出异常
    crossOrigin = true;
    }
    return crossOrigin;
    }
    zhidian
        2
    zhidian  
       Mar 7, 2018
    v2gf
        3
    v2gf  
    OP
       Mar 7, 2018
    @DOLLOR 谢谢,但是这样只能检测是否跨域,我想知道的是 response header 里面是否设置了 X-FRAME-OPTIONS,目前看了一下是没有可能了
    v2gf
        4
    v2gf  
    OP
       Mar 7, 2018
    @zhidian 好的,看了一下,一旦设置了 X-FRAME-OPTIONS,就无法在 iframe 外面读到里面的内容了
    coffeSlider
        5
    coffeSlider  
       Mar 8, 2018 via Android
    你想要通过 iframe 操作别人的网页是不可能的,如果仅做展示,可以用两层 iframe 嵌套。
    v2gf
        6
    v2gf  
    OP
       Mar 8, 2018
    @coffeSlider 只做展示,两层怎么操作?
    coffeSlider
        7
    coffeSlider  
       Mar 8, 2018 via Android
    @v2gf
    emmm
    两层 iframe 啊,这个表述有什么问题吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   797 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 20:29 · PVG 04:29 · LAX 13:29 · JFK 16:29
    ♥ Do have faith in what you're doing.