2010-04-15 79 views

回答

-3

127.0.0.1是始終解析爲localhost的保留IP地址。所以當你把它作爲Facebook的畫布URL輸入時,Facebook會嘗試訪問它自己的服務器。請求永遠不會進入您的計算機,這是實際託管應用程序的位置。當然,當訪問它在127.0.0.1,它工作正常,因爲你的本地主機是你自己的機器。

您需要計算出您的外部IP地址,並將其輸入爲Canvas回調URL。你可以檢查你的路由器設置,或者去http://www.whatismyip.com/之類的東西。一旦擁有它,請直接使用它而不是127.0.0.1來訪問你的應用程序。您可能必須更改您的路由器或防火牆以允許端口8888通過。一旦你有它的工作,輸入它作爲你的Facebook應用程序設置中的Canvas回調URL。

+0

我用http://127.0.0.1:8888作爲畫布回調URL和它的作品,所以我的東西有什麼用GWT調試服務器。此外,我用螢火蟲來檢查從Facebook調用什麼請求,我得到: GET請求''http://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997(與其他facebook參數)返回我的應用程序index.html。但gwt不加載。 當我粘貼上面的url直接瀏覽器我的應用程序啓動成功,並且螢火蟲顯示有多一個請求 http://127.0.0.1:8888/myapp/hosted.html?myapp – 2010-04-15 15:58:10

+1

也這有助於設置P3P頭 http://www.tomred.net/java-tomcat-set-expires-headers.html 剛剛替補 ((HttpServletResponse的)響應).addHeader( 「P3P」, 「CP = HONK」); // P3P:CP = HONK – alexl 2012-05-13 22:16:19

+0

這個答案是錯誤的:Javascript是在客戶端而不是在服務器上執行的,因此'localhost'或'127.0.0.1'就是指客戶端自己的主機,而不是服務器。 – 2012-05-15 17:55:56

3

在facebook iframe中使用GWT調試器存在跨站點腳本問題。 我登錄這是問題#4468 http://code.google.com/p/google-web-toolkit/issues/detail?id=4468

在這一票,我指定的解決方法是編輯正是如此的hosted.html文件:

hosted.html 
gwtOnLoad = function(errFn, modName, modBase){ 
.... 
    var topWin = window.top; 
    var url = topWin.location.href; 
... 

Workaround if you have one: 

    var topWin = window; 
    var url = topWin.location.href; 
+0

這個錯誤仍然存​​在:-( – 2012-05-15 17:56:22

1

我有一個類似的問題的部署模式。基本上我希望我的GWT可以從單個入口點部署進行管理,並且能夠在第三方網站上將其作爲小部件運行,而不必將我的應用程序下載到他們的主機中,只使用選擇器腳本作爲我的GWT的參考應用程序。

由於當前引導進程的SOP限制使用「iframe」異步加載編譯的腳本,因此存在一個問題。

我爲此創建了一個解決方法過程,讓GWT應用程序使用'腳本'而不是'iframe'進行安裝。這使我的GWT可用於第三方網站,並讓我保持單一的部署入口點。

下面的文章描述我的解決方法過程:

Make GWT Widget Avialble For 3'rd party websites

+0

這似乎是一個無關的問題。 – 2012-09-24 04:59:53