GWT:如何使用JSON发送POST跨域请求

时间:2010-08-30 15:25:57

标签: java gwt jsonp http-post

正如其Javadocs建议的那样,JsonpRequestBuilder只能发送GET请求。我需要使用相同的方法发送POST请求(对于使用JSON的跨域请求)。 有人知道任何有效的解决方案吗?我在网上找不到任何起点。

提前致谢

3 个答案:

答案 0 :(得分:4)

Google APIs Library for GWT通过使用Shindig项目的gadgets.rpc功能向{{1}发送跨帧消息来解决此问题(发送跨域GWT-RPC调用)在页面中指向您尝试与之通信的服务器上的页面。 iframe是发出请求的那个,当它收到响应时,它会发回另一个跨帧消息。

这包含在GadgetsRequestBuilder

扩展此功能以生成常规XHR请求(使用POST方法)而不是GWT-RPC请求应该相当简单。

答案 1 :(得分:1)

您不能使用JSONP进行POST - 只需插入<script src="...">标记,浏览器就会触发GET请求。

也许你正在寻找的是CORS,但这只有FF 3.5,IE 8和Safari 4及更新版本支持。服务器也必须支持它。

否则,您必须从服务器代理到其他域。

答案 2 :(得分:0)

我也有这个问题,我必须实施一些古怪的计划才能让它发挥作用。幸运的是,我控制着服务器和客户端。

POST调用定义了一个名为'src'的url参数,其中包含一些随机字符串。当我POST到服务器时,数据会进入服务器,但我无法得到响应。

在幕后,服务器使用弱缓存中的'src'密钥缓存POST响应。

然后我在POST完成后使用相同的'src'键立即进行JSONP get调用,并获取结果。

它不漂亮,但它有效。