2013-04-22 80 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