GWT客户端与公共服务器通信

时间:2013-06-27 18:43:18

标签: gwt web-applications httprequest

我正在创建这个没有服务器端的客户端webapp。例如,我希望此客户端只需向公共网站发出HTTP请求,例如http://www.google.com。到目前为止,我已经使用RequestBuilder来构建我的HTTP请求,但是当我在开发模式下运行应用程序时,我的请求的响应代码始终为0.在我构建它并在hmtl文件上发出请求之后,它给出了相同的结果。在我看来,客户端不与公共互联网通信,而只与本地服务器(空的)通信。

String url = "http://www.google.com";
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));

无论如何我能做到这一点吗?谢谢!

2 个答案:

答案 0 :(得分:1)

除非您在服务器中启用CORS,否则无法向下载页面的其他服务器发出XHR请求。

google.com尚未启用CORS,因此您无法在XHR中请求他们的网页。

如果您拥有要请求启用CORS的域,here您有一个java后端的过滤器示例。

如果您只想在自己的ui中显示3方网页,可以将其作为iframe插入,但请注意,您无法阅读iframe内容,因为它位于不同的域中。

请注意,CORS几乎适用于浏览器,但对于IE / 8-9,您必须使用XDomainRequest

答案 1 :(得分:0)

您正在遇到Same Origin Policy限制。基本上,不可能直接向不同的域发出请求。如果您只想按原样显示该网站,可以使用iframe执行此操作;如果你想提出更具体的请求,那么你需要使用JSONP这样的东西来做,但这要求服务器实际支持它。