Ajax 从GWT客户端访问另一台服务器中的文件
我有一个文件,Ajax 从GWT客户端访问另一台服务器中的文件,ajax,gwt,same-origin-policy,Ajax,Gwt,Same Origin Policy,我有一个文件,sample.xml位于一个web服务器上。我想从另一台服务器上运行的GWT应用程序访问此文件。我不想对服务于GWT应用程序的同一台服务器进行RPC调用,也不想访问服务器端所需的文件(比如代理)。我希望直接从客户端访问该文件,因为我的应用程序将作为静态文件托管在web服务器中 有办法吗?当然-您必须从浏览器发出XHR(XmlHTTPRequest),然后解析数据。 在GWT中,可以使用RequestBuilder类(请参阅) 请注意,某些客户端限制可能适用(例如单一来源政策等) 您
sample.xml
位于一个web服务器上。我想从另一台服务器上运行的GWT应用程序访问此文件。我不想对服务于GWT应用程序的同一台服务器进行RPC调用,也不想访问服务器端所需的文件(比如代理)。我希望直接从客户端访问该文件,因为我的应用程序将作为静态文件托管在web服务器中
有办法吗?当然-您必须从浏览器发出XHR(XmlHTTPRequest),然后解析数据。
在GWT中,可以使用
RequestBuilder
类(请参阅)
请注意,某些客户端限制可能适用(例如单一来源政策等)
您发出请求(在您的情况下为GET或POST-GET)并传递回调实例。实例的
onResponseReceived
方法接收一个Response
对象,该对象通过调用其getText
方法返回接收到的内容。您试图让您的网站(a.com/index.html
)引用b.com/sample.xml
。我看到了一些选择
如果您可以访问b.com
的服务器:
- 将
编辑到sample.xml
中,在JSON中通过回调包含相同的信息,并使用sample.js
标记引用它script
- 使用跨站点加载器编译您的网站(请参阅),将您的
放在index.html
,将所有其他文件放在b.com/index.html
上。然后,所有RPC调用都可以转到a.com
,但这意味着用户必须导航到b.com
,而不是b.com
a.com
b.com
的服务器:
-只需提供一个链接供人们下载sample.xml
-在具有某种脚本支持(PHP、Python、Ruby、Java等)的服务器上托管
a.com
,并将代理放置到b.com/sample.xml
“RequestBuilder”提供了帮助。但我的要求是从另一台服务器访问文件,而不是从提供应用程序代码的服务器。我收到com.google.gwt.http.client.RequestPermissionException,声明相同的组织策略限制。如果您有权访问文件服务器,您可以通过发送Access Control Allow Origin
HTTP头来缓解SOP限制,但应小心使用,因为它会带来一些风险。您对该服务器有控制权吗?如果您这样做了,JSONP将起作用。否则。。。我看不出任何优雅的方式——SOP的存在是有原因的;)