2009-07-03 76 views
0

我有使用I幀類似這樣的一對夫婦的IBM WebSphere服務器收集環境狀態的頁面:的iFrame與正常/ AJAX GET請求

<iframe src="http://server:9060/ibm/console/status?text=true&amp;type=server&amp;node=NODE&amp;name=ServerName_server_NODE"></iframe>

,並愉快地打印出「已啓動」或「不可用「等等。但是,如果我在普通瀏覽器中加載相同的url有時會起作用,有時它不會呢?其中一些顯示登錄頁面,而另一些則簡單地返回HTTP代碼500.

那麼通過瀏覽器加載頁面通過iframe還是通過瀏覽器加載頁面有什麼區別?

我可以告訴你,iframe解決方案的工作原理無論我在做哪臺機器,所以我不相信它與打開頁面的用戶有任何關係。而且在你問之前,爲什麼不保留這個解決方案的效果呢?好吧,因爲打開帶有iframe的頁面需要很長時間,而頁面中的所有內容都是通過ajax請求的。

更新:使用jQuery執行ajax調用返回「錯誤」和「未定義」的服務器,我在正常瀏覽器中看不到。

回答

0

一個iframe與使用瀏覽器打開基本相同。在這兩種情況下都使用瀏覽器憑據,因此兩者之間沒有區別。

其次,在iframe中加載某些東西需要花費與通過XHR請求相同的時間,因爲在這兩種情況下瀏覽器都會發出HTTP請求並等待響應。雖然我應該補充說iframe需要時間才能將內容呈現在頁面上。但是,如果您打算使用ajax來顯示它,iframe/xhr解決方案或多或少會相同。

+0

這兩頁之間的加載時間有很大差異。 ajax頁面幾乎立即加載,一旦它們收到響應,狀態就會被填充,而iframe版本在所有iframe響應之前未加載。 – Tinus 2009-07-03 06:06:26

0

一個區別是iframe必須呈現視圖,而XHR不會。

+0

的確,但請求本身並未改變。 – 2009-07-03 03:41:29

0

如果ajax請求的相同原始策略(限制跨域調用)進入圖片。所以你不能使用xhr進行跨域調用。另一個相同的是嵌入FlexXPSF文件在您的頁面作爲ActiveX控件,並通過JavaScript的flex調用,然後flex是負責跨域調用(flex如果目標域允許跨域使用crossdomain.xml),並使用JavaScript再次呈現結果。

+0

我也這麼想過,但它是如何工作的一些服務器,而不是所有?他們應該都在同一個域上。 – Tinus 2009-07-03 06:10:45