2012-12-04 108 views
2

這很煩人。我試圖做到這一點,當我按F5時,框架重新加載。我已經知道了,所以如果重點是在主頁(不是iframe),它的工作原理。然而,當我嘗試實現類似的解決方案,甚至嘗試與iframe進行通信時,我會得到一個'不安全的JavaScript嘗試訪問框架'。更具體,確切的錯誤是:不安全的JavaScript試圖重新加載框架時嘗試

不安全JavaScript嘗試與URL http://www.spow.tk/projects/test從幀幀訪問使用URL http://spow.tk/projects/Explorer/02/。域,協議和端口必須匹配。

請幫忙,因爲這真的很痛苦。 謝謝

+6

'spow.tk'和'www.spow.tk'是**不同**域 – zerkms

+0

哦。哇我覺得很蠢 – user1877408

+0

@zerkms你應該擴大你的評論,並提供一個答案,以幫助他人瞭解相同的政策。 – aefxx

回答

2

這兩個網站是在不同的域名。由於Javascript中的安全限制,您無法跨域進行腳本編寫。退房WikipediaMozilla更多信息(Mozilla的報價爲防止腐爛鏈接):

同源策略阻止從一個原點加載從獲取或設置從另一個起源上的文檔屬性的文檔或腳本。這項政策可以追溯到Netscape Navigator 2.0。

如果協議,端口(如果指定了一個)和主機對於兩個頁面都是相同的,Mozilla認爲兩個頁面具有相同的來源。下表給出了原點比較的例子向URL http://store.company.com/dir/page.html

URL             Outcome Reason 
http://store.company.com/dir2/other.html   Success 
http://store.company.com/dir/inner/another.html Success 
https://store.company.com/secure.html   Failure Different protocol 
http://store.company.com:81/dir/etc.html   Failure Different port 
http://news.company.com/dir/other.html   Failure Different host 

有一個例外相同的產地來源規則。腳本可以將document.domain的值設置爲當前域的後綴。如果是這樣,則較短的域用於隨後的原點檢查。例如,假設文檔中的腳本http://store.company.com/dir/other.html執行以下語句:

document.domain =「company.com」; 執行該語句後,頁面將通過與http://company.com/dir/page.html的原點檢查。但是,出於同樣的原因,company.com無法將document.domain設置爲othercompany.com。

端口號由瀏覽器單獨保存。任何對setter的調用,包括document.domain = document.domain都會導致端口號被null覆蓋。因此,只有在第一個設置document.domain =「company.com」時,才能使company.com:8080與company.com通話。它必須在兩者中設置,以便端口號都爲空。

0

spow.tkwww.spow.tk被認爲是不同的域。

但是,您可以做的一件事是強制您的網站使用其中一種,這樣就不會再出現此問題。例如,如果您使用的是Apache,則可以修改您的.htaccess以將所有請求從spow.tk重定向到www.spow.tk(或者如果這是您更喜歡的www.spow.tkspow.tk)。即使您的用戶或代碼引用了一個域,該請求也會重定向到您指定的域。

相關問題