没有JSONP的跨站点呼叫

vbj*_*ain 8 javascript gwt cross-site

我正在使用HTML,CSS和Javascript代码构建前端的应用程序.后端将使用核心java,Restlet创建.

现在真正的问题是前端和后端都将在具有差异端口的差异服务器上.比如,前端打开:( http://clientLookup仅举例)后端打开,http://lcgrke:8080

现在我将通过Ajax Request或jQuery Ajax从前端发送服务器或休息调用,然后我得到了跨边脚本问题(SOP - 相同的源策略).我没有得到如何解决这个问题.

JSONP可以是其中一个选项,但它仅适用于GET类型的调用,但在我的应用程序中,我将有GET/POST请求.此外,一些服务器的URL不会启用JSONP(不要问我为什么,只是接受它们将是不可编辑的),所以JSONP似乎不是更好的选择.

任何人都可以解释我如何解决这个问题?

Man*_*ino 0

处理跨站点请求的现代方法是使用CORS而不是JSONP,尽管您必须了解哪些浏览器支持 CORS。

您可以在几乎现代的浏览器(IE10、FF、Chrome、Safari、Opera)上使用 CORS,但不能在 IE9/8 上使用。

对于 IE9/8,您可以使用另一种称为XDomainRequest的技术,但您必须通过 JSNI 实现它。

使用 CORS 与 JSONP 的目标是,在服务器端,您只需添加一个过滤器,一切都应该开箱即用(RPC、RF 等)。

要在 gwt 中使用 CORS,您可以在gwtquery站点中阅读此页面,其中有一个过滤器示例。在该页面中,您还可以了解有关 jsonp 的有用信息,以及如何使用 gwtquery ajax 来简化 gwt RequestBuilder 方式。