【问题标题】:GWT interacting with restful architectureGWT 与 restful 架构交互
【发布时间】:2011-12-08 01:33:07
【问题描述】:

我有一个后端 REST API,我有一个带有 GWT 的前端。我在一个 IP 地址为 192.168.1.4 的网络上。

我已将一个常量 URL 声明为

public static final String DomainName="http://127.0.0.1/recess/restApp/";

使用 ip 127.0.0.1,一切正常

但是当我将 ip 更改为 192.168.1.4 时,应用程序无法运行,并且我得到的状态码为 0。

GWT 应用位于与 REST API 相同的 Web 根目录上。

事实上,这不可能是同源策略问题,因为它是一个网络服务??

有人知道这个吗??

我正在使用 xampp,而 GWT 项目在 htdocs 中与 REST API 相同!!

【问题讨论】:

  • 除了更改该静态值之外,您是否将浏览器中的应用程序作为 192.168.1.4 访问?
  • 不,这不是问题,这是一个网络服务,它可以在不同的域上,我还是试试吧
  • 您是从客户端代码还是服务器代码连接到它?
  • 不,服务器代码在 php 和客户端代码 GWT,GWT 文件在 web 根目录中
  • 您能发布建立连接的 GWT 代码吗?

标签: web-services gwt rest


【解决方案1】:

听起来您确实遇到了禁止外部连接的沙盒策略。

您可能遇到的一项政策是 GWT 浏览器插件连接限制。在 Chrome 中,在 tools | 添加您的 IP 地址扩展 | GWT 开发插件 |选项。在 Firefox 中,它位于工具 |附加组件 |扩展 |谷歌... |选项

我建议您不要使用硬编码的 url,以符合单一来源政策,您可能希望使用加载网页的确切 url。 Web 工具包提供了一种机制来做到这一点。

public static GWT.getHostPageBaseURL() 对于附加到相对于主机页面的资源路径非常有用。

public static GWT.getModuleBaseURL() 对于准备与模块相关的 url 很有用。

http://google-web-toolkit.googlecode.com/svn/javadoc/2.3/com/google/gwt/core/client/GWT.html#getHostPageBaseURL()

【讨论】:

    【解决方案2】:

    恐怕这是同源策略违规:如果您要求浏览器使用 XMLHttpRequest(或在 GWT 中为 RequestBuilder)加载某个 URL,则该 URL 必须位于同一 来源 作为试图访问它的页面;除非浏览器支持CORS(除了 IE;至少在 IE10 出现之前)并且您尝试访问的服务器发送适当的 HTTP 标头以允许跨域连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 2012-03-13
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多