【问题标题】:detecting where my site is iframed检测我的网站的 iframe 位置
【发布时间】:2011-03-22 18:41:43
【问题描述】:

我知道iframed pages can tell that they are,但是可以告诉我在哪里吗?据我所知,当父域是不同的域时,parent.location 会遇到安全问题。有什么解决办法吗?

【问题讨论】:

    标签: javascript iframe cross-domain


    【解决方案1】:

    我没有测试过,但你应该可以做这样的事情:

    if (window.top !== window.self) {
        alert("I am a frame. The parent document is " + document.referrer);
    }
    

    【讨论】:

    • 谢谢。这与我在对 Shane N 的回答的评论中提到的方法基本相同,但在客户端。它会给我一个父母,但不是祖父母。
    • 确实如此。我只是想对上述问题给出一个明确的 JavaScript 答案,以防其他人需要它。
    【解决方案2】:

    不,如果父窗口不在同一个域中,则不能访问它。

    【讨论】:

    • 如果我也拥有父域怎么办?
    • 它应该可以工作。请注意,不同的子域也会出现跨域问题。您可以通过设置 document.domain 来解决此问题,以便两者共享同一个域。
    • 我考虑的不是子域,而是两个独立的域,而是我控制两个域的内容。
    • 例如,您在 myDomian.com 上,而您的 iframe 在 subdomain.myDomain.com 上,您可以在父级中设置域:$('myIframe').contentWindow.document.domain = myDomain.com。我注意到您可以在 iframe 中执行相同的操作。
    【解决方案3】:

    它不会作为推荐人出现在您的服务器日志中吗?我知道这不是一种程序化方式,但我想知道您是否只是想追踪窃取您内容的人。

    【讨论】:

    • (与其说是偷窃,不如说是知道它出现在哪里。)
    • (就此而言,我可以在后端使用$_SERVER['HTTP_REFERER'] 更直接地获取相同的信息。)这将使我进入父页面,但不是祖父母。
    【解决方案4】:

    如果您想付出努力,您可以编写一个插件(适用于所有浏览器)或活动 x(适用于 ie)来确定这一点,因为它们不会像 javascript 等那样被阻止访问客户端计算机。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 2016-06-15
      相关资源
      最近更新 更多