2015-04-02 59 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

相關問題