2010-09-15 67 views
0

我有一些JavaScript在同一個域上的兩臺獨立服務器之間共享請求。瀏覽器/ JavaScript相同的來源策略如何適用於兩級域名?

is .com是JavaScript的域名要求?

在這種情況下,兩個服務器都在與TYY的.abc.tyy域中什麼通常是.COM

想知道如果我只能使用.COM域?我得到了一個拒絕的權限錯誤,但是這個代碼在同一個域(.com)上的其他單獨服務器上正常工作。

更新時間: 這裏是我究竟是如何使用這樣的:

123.abc.tyy具有加載,我要訪問的屬性的腳本。

在打開腳本標記123.abc.tyy上的腳本將document.domain設置爲'abc.tyy'。

當我在123.abc.tyy的腳本FROM 234.abc.tyy中調用'getUser()'函數時,我得到一個權限被拒絕的錯誤。

我打電話'getUser()'的方式是: 我在瀏覽器中訪問http://123.abc.tyy,該網站允許我指定一個URL來加載其中一個框架。我點那個網址http://234.abc.tyy/BeginLoadPatient.aspx「在頁我做了以下內容:

了window.location =‘http://234.abc.tyy/LoadPatient.aspx?PatientId=’+的getUser()「;用的getUser是原產於123.abc.tyy

如果一個函數我將234.abc.tyy和123.abc.tyy添加到我的可信站點,一切正常 - 這是跳過相同的原始策略嗎?

回答

2

不,SOP不關心域是什麼,只有它代表相同的來源(可能是因爲你的.com域是硬編碼的嗎?)

請注意,還有更多比要考慮的領域。 Same Origin Policy也查看協議,端口和主機。所以和bbb.abc.tyy不同的起源。

如果你在控制所涉及的服務器,你可能會看到Cross-Origin Resource Sharing,但不幸的是,CORS僅在現代瀏覽器中實現(並且在支持它的那些版本的IE中,只有在明確使用它時才支持) 。

另一種選擇當然是JSON-P,它的優點是可以立即使用跨瀏覽器。

要看的另一件事是document.domain,詳細信息herehere


更新您的修改後:

在上打開腳本標籤123.abc.tyy腳本,設置document.domain的以 'abc.tyy'。

當我在123.abc.tyy的腳本FROM 234.abc.tyy中調用'getUser()'函數時,我得到一個權限被拒絕的錯誤。

您還需要在BeginLoadPatient.aspx中將document.domain設置爲「abc.tyy」。

如果我將234.abc.tyy和123.abc.tyy添加到我的可信網站,一切正常 - 這是否跳過了相同的原產地策略?

我不會感到驚訝(雖然對我來說這將是非常狡猾的),但沒有第一手的知識。很容易測試。

+0

您好,感謝您的好信息。我有不同主機名的其他部署似乎工作正常 - 也許這是瀏覽器的權限?當我查看您分享的所有內容時,我會跟進另一條評論。謝謝。 – user53885 2010-09-15 14:04:45

+0

@ user53885:還有'document.domain',可能值得研究 - 我在上面添加了鏈接。 – 2010-09-15 14:27:23

+0

添加了我的場景的更多詳細信息。 – user53885 2010-09-16 15:43:29

相關問題