【问题标题】:Loading content of an external iframe locally在本地加载外部 iframe 的内容
【发布时间】:2013-12-16 01:28:27
【问题描述】:

我正在本地做一个实验,试图了解跨域策略如何与 iframe 一起使用:

  • 我在本地提供了一个简单的页面,其中 iframe 指向 http://edition.cnn.com/
  • 我修改了我电脑中的hosts文件,将localhost指向mytest.cnn.com

根据Cross Origin policy 的定义,如果我尝试从页面(现在从 mytest.cnn.com 提供)访问 iframe 中的元素,它应该可以工作,但我仍然收到相同的错误“已阻止来自访问跨域框架的来源为“http://mytest.cnn.com”的框架。

我也尝试将页面的域更改为“cnn.com”,但我得到了相同的结果。是否有任何特殊情况,因为我从本地服务器提供页面?

【问题讨论】:

    标签: javascript html iframe cross-domain


    【解决方案1】:

    您在问题中链接的Same-origin policy description 中的定义说:

    如果两个页面的协议、端口(如果指定)和主机相同,则两个页面具有相同的来源。

    在你的情况下是两个主机

    • edition.cnn.com
    • mytest.cnn.com

    不匹配。下面的例子定义到不同的子域都没有匹配的主机。

    如果您的 iframe 将指向同一子域(即 mytest.cnn.com/iframe.html)上的页面,则一切正常。

    【讨论】:

    • 啊,完全正确,我错过了那部分。另一方面,我也尝试使用子域(my.edition.cnn.com),但它也没有工作......
    • 据我了解,域(包括所有子域)必须完全匹配。所以子域不会工作。但是,如果您使用域 my.edition.cnn.com,您可能会更改包含 iframe 的页面的来源。尝试命令“document.domain = 'edition.cnn.com';”。这在“更改原点”部分中进行了描述
    • 什么都没有,即使将主机页面中的域更改为 edition.cnn.com 我在尝试访问 iframe 时仍然遇到相同的错误:“SecurityError: Blocked a frame with origin”my.edition.cnn.com "从访问跨域框架"
    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多