2015-04-02 31 views
0

我们目前有一个JavaScript客户端使用类似于下面的代码的东西成功地访问其他域中的Web服务跨域Web服务:使用Ext.Ajax.request调用需要WS可靠消息

var postXml = "" + 

    "<aaa:getSomething>" + 
     "<param1>" + obj.param1 + "</param1>" + 
     "<param2>" + obj.param2 + "</param2>" + 
    "</aaa:getSomething>"; 

    var data = this.createEnvelope(postXml); 
    var request = Ext.Ajax.request({ 
     url : this.webServiceUrl, 
     method : "POST", 
     callback : this.onGetSomething, 
     obj : obj, 
     scope : this, 
     headers : { 
      SOAPAction: "urn:onGetSomething" 
     }, 
     xmlData : data 
    }); 

我们被要求将WS-ReliableMessaging添加到我们的Web服务。有没有办法修改我们的JavaScript客户端以连接到启用WS-ReliableMessaging的新服务?我不是很懂Javascript的人,但从我迄今为止的研究中,我怀疑唯一的办法可能是将Ajax请求发送到本地服务器端代理JSP,以便从Java进行调用,情况如何?

回答

0

你应该JSON-P的跨域访问,如果你在这里检查阿贾克斯文档:http://docs.sencha.com/extjs/5.1/5.1.0-apidocs/#!/api/Ext.data.proxy.Ajax,限制部分说:

“AjaxProxy不能用来从其他域中的数据如果您的应用程序。运行于http://domainA.com无法加载数据http://domainB.com,因为浏览器有一个内置的安全策略,禁止域之间通过AJAX互相对话

如果您需要从其他域读取数据并且无法设置代理服务器(一些软件运行在您自己的域的Web服务器上,并透明地将请求转发到http://domainB.com,从而使它看起来像他们实际上来自http://domainA.com),您可以使用Ext.data.proxy.JsonP和一种称为JSON-P(带填充的JSON)的技术,只要http://domainB.com上的服务器是设置为支持JSON-P响应。 “

+0

感谢Guilherme,有趣,因为我想我记得被告知上述工作跨域。无论如何,我主要关心的仍然是发现是否有方法访问Web服务器这要求使用类似于上述代码的WS-Reliable Messaging,或者如果我们必须使用其他解决方案,例如拨打另一个服务器来建立与目标服务器的可靠消息传递连接并实际进行呼叫。 – mks 2015-04-05 23:06:47