2010-04-21 54 views
5

我在運行JBoss的公司Intranet上有一臺服務器。我想從我的機器(也在Intranet上)將API調用發送到此服務器,並使用JQuery獲取生成的XML響應。相同的源策略如何適用於IP地址

我閱讀Wikipedia的條目,但我很困惑這是如何適用於我的情況,因爲我們的機器只有IP地址,而不是域名。

  • 服務器URL:10.2.200.3:8001/serviceroot/service
  • 客戶端IP地址:10.2.201.217

我的問題是:

  1. 據我說d這些是不同的領域,對吧?所以我必須使用代理向服務器發出JQuery.ajax調用
  2. 如果我想避免(2)做,我可以在服務器上安裝Apache,並在服務器上安裝JS代碼形式的頁面嗎?但那麼JS將從10.2.200.3開始,而服務器將在10.2.200.3:8001。根據政策,這些被視爲不同的領域嗎?

謝謝!

+0

去年我花了一個小時左右的時間想清楚這一點,我認爲我沒有得到很好的答案。我真的不需要一個,所以我放棄了:我 – Pointy 2010-04-21 22:08:43

+0

尖尖的,我完全理解你!我拉着頭髮解決了這個簡單的問題兩天。 – recipriversexclusion 2010-04-21 22:49:40

回答

2
  1. 是的。

  2. 是的,不同的端口意味着不同的來源。這是大多數瀏覽器在JS中完成的一段時間,但在HTML5 draft中有明確的描述,XMLHttpRequest draft引用了它。

如果A和B具有不相同的端口部件,返回false。

+0

謝謝Bobince!還有一個問題:如果我的JBoss服務器也在10.2.200.3:8001上爲JS提供服務,或者應該使用常用的代理服務器解決方案,那麼您會建議哪一種? – recipriversexclusion 2010-04-21 22:52:34

+0

取決於您的網絡附加組件對服務的整體性,我認爲,您是否希望它們成爲同一項目的有效組成部分。無論哪種方式,我都不願意在生產服務器上運行開發AJAX腳本,如果是這樣的話。 – bobince 2010-04-21 23:02:51

2

如果端口或地址不同,它們是不同的域。如果您需要從實際上是另一臺服務器訪問信息,則實際上有兩種選擇。一種是編寫某種反向代理來將您的請求從同一個源服務器傳遞到輔助服務器。

或者,如果您在控制次要目標,並且在提供直接訪問時沒有安全風險,則可以考慮調整輔助服務器以發出JSON-P響應。