【问题标题】:GWT: How to send POST cross domain requests with JSONGWT:如何使用 JSON 发送 POST 跨域请求
【发布时间】:2011-04-05 20:00:08
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: java gwt jsonp http-post


    【解决方案1】:

    我也遇到了这个问题,我必须实施一些古怪的方案才能让它发挥作用。幸运的是,我同时控制了服务器和客户端。

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

    在幕后发生的事情是服务器将带有“src”键的 POST 响应缓存在弱缓存中。

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

    它不漂亮,但它有效。

    【讨论】:

      【解决方案2】:

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

      这已包含在GadgetsRequestBuilder 中。

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

      【讨论】:

      • 感谢您的建议,但由于完成此任务的时间有限,我决定暂时继续使用 GET。
      【解决方案3】:

      您不能使用 JSONP 进行 POST - 它所做的只是插入一个 <script src="..."> 标记,然后浏览器会触发一个 GET 请求。

      也许您正在寻找的是CORS,但它仅受 FF 3.5、IE 8 和 Safari 4 及更高版本支持。并且服务器也必须支持它。

      否则,您将不得不从您的服务器代理到另一个域。

      【讨论】:

      • 谢谢,您的建议看起来很有希望。但由于完成这项任务的时间有限,我决定暂时继续使用 GET。
      • 您忘记提及 Chrome 3 或更新版本。如果有帮助,我已经更新了 CORS Wikipedia 文章,其中包含我几天前收集的有关浏览器支持的更详细信息。
      猜你喜欢
      • 2010-09-22
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多