在facebook iframe中调试gwt

时间:2010-04-15 15:12:41

标签: facebook gwt iframe

我正在尝试调试在facebook iframe中运行的gwt 2.0 apllication。

当我使用“http://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997”作为“Canvas Callback URL”时,我的应用程序无法加载,但是当我编译它并使用“http://127.0.0.1:8888”时,它的效果非常好。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

我对部署模式有类似的问题。基本上我希望我的GWT可以从一个入口点部署进行管理,并且能够在第三方网站上将其作为小部件运行,而不必将我的应用程序下载到他们的主机中,只使用选择器脚本作为我的GWT的参考应用程序。

由于当前引导过程的SOP限制,使用“iframe”以异步方式加载已编译的脚本,因此存在问题。

我为此创建了一个变通方法程序,让我们使用'script'而不是'iframe'来安装GWT应用程序。这使我的GWT可用于第三方网站,让我保持一个单一的入口点。

以下文章介绍了我的解决方法步骤:

Make GWT Widget Avialble For 3'rd party websites

答案 2 :(得分:-3)

127.0.0.1是保留的IP地址,始终解析为localhost。因此,当您将其作为Facebook画布URL输入时,Facebook会尝试访问自己的服务器。请求永远不会出现在您的计算机上,这是应用程序实际托管的位置。当然,当在127.0.0.1访问它时,它工作正常,因为你的localhost是你自己的机器。

您需要确定外部IP地址,并将其输入为Canvas Callback URL。您可以检查路由器设置,或转到http://www.whatismyip.com/之类的内容。获得后,尝试直接使用它而不是127.0.0.1访问您的应用程序。您可能必须更改路由器或防火墙以允许端口8888通过。完成后,在Facebook应用程序设置中将其作为Canvas Callback URL输入。