如何通过GWT发送跨站点PUT请求?

时间:2013-04-04 04:14:35

标签: google-app-engine rest gwt jsonp

我正在使用GAE / GWT创建一个Web应用程序。前端GUI是一个Web客户端,服务器是RESTFUL服务器,它们都在不同域中的GAE中运行。

我正在使用带有填充的json与服务器通信,但发现我将无法发送PUT / POST / DELETE请求。

我的应用程序将主要用于查询数据(查询:85%的案例,修改数据:15%)。所有请求都将通过身份验证。

我正在考虑以下选项。

1)对于查询使用JsonpRequestBuilder,修改在Web客户端服务器端创建代理并通过此代理命中REST服务。使用GWT RPC与此代理进行通信。

2)在REST服务中将每个请求作为GET请求(包括修改数据的请求)并直接从Web客户端使用jsonp。

我更喜欢选项1)但是选项2)似乎没什么工作要做。

应该1)是我的首选吗?

2)是否存在任何问题,因为我的所有请求都将通过身份验证。 ?

还有其他简单方法可以解决这个问题吗?

此致

沙迪亚

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用CORS,它允许您发送两个不同来源的请求。但它没有那么广泛传播(检查caniuse),所以如果你必须支持IE8-9,那对你来说还不够。

在您的情况下,我会尝试实现双解决方案(例如CORS +服务器代理)。如果浏览器支持CORS - 将请求直接发送到目标服务器,如果没有 - 通过代理发送请求。

答案 1 :(得分:0)

很抱歉,请问您的客户端在不同的域上运行有什么好处?根据我的理解,您的客户端服务器将无能为力......

如果您不是REST后端的“所有者”,则此后端可能会为第三方应用程序开发授权系统,例如oauth2

然后,您的应用程序可以通过安全连接与后​​端通话。您可以使用scribe在后端执行此操作。