从GWT客户端访问另一台服务器中的文件

时间:2010-08-15 20:19:14

标签: ajax gwt same-origin-policy

我有一个位于一个Web服务器的文件sample.xml。我想从另一台服务器上运行的GWT应用程序访问此文件。我不想对服务GWT应用程序的同一服务器进行RPC调用,并在服务器端访问所需的文件(如代理)。我想直接从客户端访问该文件,因为我的应用程序将作为Web服务器中的静态文件托管。

有办法吗?

2 个答案:

答案 0 :(得分:1)

当然 - 您必须从浏览器发出XHR(XmlHTTPRequest),然后解析数据。
在GWT中,您可以使用RequestBuilder类(请参阅here)。

请注意,某些客户端限制可能适用(例如单一来源政策等)

您发出请求(在您的情况下为GET或POST-GET)并传递回调实例 实例的onResponseReceived方法接收Response对象,通过调用其getText方法返回收到的内容。

答案 1 :(得分:0)

您尝试让自己的网站(a.com/index.html)引用b.com/sample.xml。我看到了一些选择。

如果您有权访问b.com的服务器:

  • sample.xml修改为sample.js以在JSON中包含带回调的相同信息,并使用script标记引用它
  • 使用跨网站加载程序编译您的网站(请参阅Controlling Compiler Output),将index.html放在b.com/index.html,将所有其余文件放在a.com上。然后,您的所有RPC调用都可以转到b.com,但这意味着用户必须导航到b.com而不是a.com

如果您无法访问b.com的服务器:   - 只需提供供人们下载sample.xml的链接   - 在具有某种脚本支持(PHP,Python,Ruby,Java,任何东西)的服务器上托管a.com并将代理放到b.com/sample.xml