2013-04-22 117 views
0

我使用Html,css和Jquery Mobile框架創建ios應用程序,並將其連接到SOAP xml Web服務。由於我的Web服務位於另一臺PC上,因此我遇到了跨域問題,但已將應用程序連接到soap web服務,但由於跨域問題而無法獲取返回(xml格式)。繞過跨域問題

我的問題是,有沒有辦法繞過這個問題?允許獲得回報? 或如何將XML返回轉換爲Json爲可接受的,並在Html中使用jQuery Ajax獲得返回結果。感謝那些會幫助我的人。

回答

1

一個解決方案可能是在訪問SOAP然後透明傳輸它的Web PC上安裝代理。然後你的應用程序認爲它來自同一臺服務器,你不再有跨域問題。


編輯:(我會發表評論,但該格式是不一樣的)

這也正是這一點,你還是用$.ajax但你發送請求到Web服務器,該服務器傳送請求,得到響應併發送響應返回給客戶端:

  request       request 
client ----------->  proxy  ----------> web service 
(HTML) <----------- (your web server) <---------- (anywhere) 
     response      response 

重要:小心與Web服務識別客戶端的方式,因爲它會看到請求來自相同的IP(您的Web服務器)

+1

如何做到這一點?先生。 – 2013-04-22 01:43:55

1

This是一個簡單的PHP代理的好例子,它可以讓您返回XML。

關鍵是它必須在您的服務器上完成,或通過服務(如YQL)完成。沒有祕密松鼠的方式可以讓你做到客戶端。


因此,例如,你的AJAX調用變爲:

$.ajax({ 
    url: 'php/ba-simple-proxy.php?url=http://remote.server/service.name', 
    type: 'GET', 
    dataType: "json", 
    beforeSend: function(jqXHR, settings) { 
     //Show a loading image here 
    }, 
    success: function(json) { 
     //process data here 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     //Show an error message here 
    } 
}); 
+0

如何使用Html中的sir> im現在使用Html – 2013-04-22 01:44:11

+1

好吧,您說您正在使用jQuery Mobile,並且可能使用'$ .get'或'$ .ajax'來查詢您的Web服務。重點在於,您必須將您的$ .ajax調用指向與HTML相同的服務器上的代理,然後該代理將關閉並查詢Web服務。上面鏈接的代理非常簡單,並且使用'?url = http:// other.server/service'參數。 – Juffy 2013-04-22 02:06:29

+0

Im使用$ .ajax連接到Web服務sir .. – 2013-04-22 02:23:49