2013-12-15 41 views
0

I'm本地做一個實驗,試圖瞭解十字架的起源策略藉助iframe是如何工作的:加載內容本地

  • 我有一個簡單的頁面與一個iframe指向http://edition.cnn.com/
  • 本地提供
  • 我修改了主機在我的電腦文件到本地主機指向mytest.cnn.com

按照Cross Origin policy的定義,如果我嘗試從IFRAME從頁面(從現在擔任訪問一個元素mytest.c nn.com),它應該可以工作,但是我仍然會遇到同樣的錯誤「阻止一個源幀」http://mytest.cnn.com「訪問一個跨源幀」。

我也嘗試將網頁的域名更改爲「cnn.com」,但我得到了相同的結果。是否應用了特殊情況,因爲我正在從本地服務器提供頁面?

回答

1

在你的問題中鏈接的Same-origin policy description定義說:

Two pages have the same origin if the protocol, port (if one is specified), and host are the same for both pages.

在你的情況下,兩個主機

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

不匹配。以下定義到不同子域的示例沒有匹配的主機。

如果您的iframe將指向同一子域(即mytest.cnn.com/iframe.html)上的頁面,則所有內容都應該可以正常工作。

+0

啊,完全正確,我錯過了那部分。另一方面,我也嘗試了一個子域(my.edition.cnn.com),它也沒有工作... – jasalguero

+0

據我所知,描述域(包括所有子域)必須完全匹配。所以子域不會工作。但是,如果您使用域my.edition.cnn.com,則可能會更改包含iframe的頁面的來源。試試命令「document.domain ='edition.cnn.com';」。這在「更改原始地址」一節中有所描述 – Florian

+0

甚至在將主機頁面中的域更改爲edition.cnn.com之後,我仍然在嘗試訪問iframe時遇到同樣的錯誤:「SecurityError:阻止了具有原點的框架」 http://my.edition.cnn.com「從訪問跨源框架」 – jasalguero