我使用 Html、css 和 Jquery Mobile 框架创建了一个 ios 应用程序,并将其连接到 SOAP xml Web 服务。由于我的网络服务在另一台电脑上,我有跨域问题,但已经将应用程序连接到肥皂网络服务,但由于跨域问题而没有得到返回(xml 格式)。
我的问题是,有什么办法可以绕过这个问题吗?允许得到回报?或如何将 XML 返回转换为 Json 以使其可接受并在 Html 中使用 jquery Ajax 获取返回。感谢那些会帮助我的人。
我使用 Html、css 和 Jquery Mobile 框架创建了一个 ios 应用程序,并将其连接到 SOAP xml Web 服务。由于我的网络服务在另一台电脑上,我有跨域问题,但已经将应用程序连接到肥皂网络服务,但由于跨域问题而没有得到返回(xml 格式)。
我的问题是,有什么办法可以绕过这个问题吗?允许得到回报?或如何将 XML 返回转换为 Json 以使其可接受并在 Html 中使用 jquery Ajax 获取返回。感谢那些会帮助我的人。
一种解决方案可能是在您的网络 PC 上安装一个代理,该代理可以访问 SOAP,然后透明地传输它。然后您的应用程序认为它来自同一台服务器,并且您不再有跨域问题。
编辑:(我会发表评论,但格式不一样)
这正是重点,您仍然使用$.ajax
但您将请求发送到您的 Web 服务器,服务器传输请求,获取响应并将响应传输回客户端:
request request
client -----------> proxy ----------> web service
(HTML) <----------- (your web server) <---------- (anywhere)
response response
重要提示:注意 Web 服务识别客户端的方式,因为它会看到来自同一 IP(您的 Web 服务器)的请求
这是允许您返回 XML 的简单 PHP 代理的一个很好的示例。
关键是它必须在您的服务器上完成,或者通过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
}
});