2010-02-12 58 views
7

我們正在考慮將成熟的GWT(Google Web Toolkit 2.0)應用程序與現有的ASP.NET 3.5應用程序集成。我的第一個直覺反應是這是一個可怕的弗蘭肯斯坦的想法。但是,客戶堅持我們使用由第三方開發的這個應用程序。從ASP.NET 3.5應用程序的IFRAME中運行GWT應用程序(包括Applets)?

我幾乎沒有控制GWT應用程序的開發。

我的第一個想法是實際嘗試將其嵌入到iFrame中。由於GWT在Tomcat/Jakarta下運行,因此它位於與.NET應用程序不同的服務器上,因此iFrame src將位於另一臺機器上的URL上。

我需要利用我們自己的ASP.NET授權方案來限制對嵌入式GWT應用程序的訪問。 GWT應用程序還使用嵌入式Java小程序,目前似乎不在iframe中工作。 GWT應用程序調用後端服務器(使用GWT-RPC?)。

任何人都可以看到這種方法的任何主要問題?在不同的機器上託管GWT會在iframe上工作嗎?

注意:簡單地添加一個同名的DIV不適用於此!

回答

6

爲了闡述託尼說的話,GWT可以在任何頁面上生活。在最低級別,GWT通過其ID或body元素掛鉤爲div,如RootPanel,並從那裏向其添加小部件。

只需在您的ASP頁面中添加一個div,例如<div id="gwt-root" />,並在您的GWT代碼中以RootPanel root = RootPanel.get("gwt-root")開頭。然後,您可以開始添加小部件到該面板來構建頁面的GWT部分。

你還需要在你的GWT,使生成的代碼與script標籤,就像這樣:

<script type="text/javascript" src="gwt-app-name/gwt-app-name.nocache.js"> 

另外,如果你想,GWT可以使用使用常規的JavaScript網頁的其他部分進行交互JSNI

+0

請注意原始問題。我無法訪問原始的GWT源代碼,並且它被託管在另一臺機器上,因此您的建議實際上會是XSS問題嗎?由於我無法在其他服務器上引用* .nocache.js文件。 – 2010-04-13 14:32:14

+2

您可以從任何站點引用JS文件(只要該文件可讀)。只需將您的腳本標記更改爲絕對URL爲http:// otherserver.com/gwt-app-name/gwt-app-name.nocache.js。在這種情況下,您可能遇到問題的地方在於製作GWT-RPC請求......您可以像在另一臺服務器上託管的iframe中所說的那樣運行GWT應用程序。 – 2010-04-13 15:12:43

1

你不需要IFRAME。 Writeyour應用程序,以便主面板託管在具有特定ID的div內。如果你的ASP.net可以提供一個具有相同ID的div,那麼你所要做的就是包含生成的JavaScript文件(+一些樣式表),你的應用程序將顯示在div內。

相關問題