2009-12-01 45 views
1

有一些JavaScript,我需要通過以下工作:JavaScript安全同一臺服務器上/交叉腳本

://本地主機

://服務器

:/www.domainnamefortheserver.com

當我從http://servername運行腳本與IFRAME引用域 - 它不加載。

有沒有辦法讓Javascript安全模型識別服務器名稱,本地主機和域作爲相同的「域」?

感謝

+0

您是否使用絕對URL? – Wookai 2009-12-01 15:36:41

回答

2

如果您在UNIX上運行,你可以編輯/ etc/hosts來給您的服務器假的DNS條目。

例如。

127.0.0.1本地主機www.domainnamefortheserver.com

那麼你可以隨時連接到它的正確名稱,即使它不是活的網站上呢。不要試圖直接破壞javascript安全。

這也適用於OSX。我期望Windows的工作方式不同。

+1

在Windows中,它是一樣的,你可以添加一個條目到你的主機文件位於 - \ Windows \ system32 \ drivers \ etc \ – brendan 2009-12-01 15:34:35

+0

謝謝。我懷疑在18個月的時間裏,當我突然發現我在Windows上需要它時,我會來找那個評論的! – 2009-12-01 17:15:36

+0

此外,關於使用相對路徑的下面的評論是很好的,除非你受到一些第三方軟件的限制,這些軟件將全部域放到任何地方。 – 2009-12-01 17:16:21

2

如果您使用的是服務器端語言生成頁面,您可以設置安全域,像這樣:

document.domain = $CURRENT_HOSTNAME; 

所以安全域將是用戶所請求的域名。這是一個黑暗中的鏡頭,但我希望它有幫助。

0

你是什麼意思

我指的都是域名

如果您在http://servername(使用<script src=''>)的頁面上加載腳本,即使它們來自另一個域,它們也可以訪問http://servername上的所有內容。

但是,如果您嘗試對其他域進行AJAX調用,那麼您遇到了問題。您可以使用克里斯托弗解釋的技巧,即將域名製作成別名。

1

使用根相對URI:

href="/foo/bar" 

,而不是絕對URI:

href="http://example.com/foo/bar" 

這樣的文件將會從相同的主機名來加載。

相關問題