0

我们目前有一个 javascript 客户端使用类似于以下代码的代码成功访问了另一个域上的 Web 服务:

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,但从我目前的研究来看,我怀疑唯一的方法可能是向本地服务器端代理 JSP 发出 Ajax 请求,该 JSP 从 Java 进行调用,是这样吗?

4

1 回答 1

0

如果您在此处查看 Ajax 文档,则应该使用 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 with Padding)的技术,只要服务器在http:// /domainB.com设置为支持 JSON-P 响应。有关详细信息,请参阅 JsonPProxy 的介绍文档。”

于 2015-04-04T21:38:27.230 回答