跨域问题XMLHttp

时间:2011-10-12 23:17:54

标签: javascript html xml

我面对xmlhttp的常见跨域问题。

我正在尝试使用SOAP协议访问WSDL Web服务。我没有使用PHP,所以我不能使用

header('Access-Control-Allow-Origin: *');

我也不能使用JSONP作为我得到的响应不是JSON格式而是XML格式。 有没有其他方法可以解决这个问题。

这是我的代码段。

var user1="user_name";
var pass1="******";
var url="http://ideone.com/api/1/service.wsdl";

var soap_msg="<?xml version='1.0' encoding='UTF-8' standalone='no'?>"+
"<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'"+          
"xmlns:tns='http://ideone.com:80/api/1/service'    xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'"+
"xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'"+
"xmlns:soap-enc='http://schemas.xmlsoap.org/soap/encoding/' "+
"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' >"+
"<SOAP-ENV:Body><mns:getLanguages xmlns:mns='http://ideone.com:80/api/1/service' SOAP-  ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>"+
"<user xsi:type='xsd:string'>"+user1 +"</user><pass xsi:type='xsd:string'>"+pass1+"</pass>"+    
"</mns:getLanguages></SOAP-ENV:Body></SOAP-ENV:Envelope>";
var oXmlHttp=  new XMLHttpRequest();
oXmlHttp.open("POST",url,true);
oXmlHttp.setRequestHeader("Content-Type", "text/xml");
oXmlHttp.setRequestHeader("SOAPAction", "http://ideone.com/api/1/service#getLanguages");
oXmlHttp.setRequestHeader("Access-Control-Allow-Origin", "*");
oXmlHttp.send(soap_msg);
var res=oXmlHttp.responseXML;

提前致谢。

2 个答案:

答案 0 :(得分:1)

这是YUI的链接,您可能会发现它很有用。

http://developer.yahoo.com/yql/guide/yql-jsonp-x.html

他们编写了一个回调函数,它本质上是一个允许返回XML的信封。

答案 1 :(得分:0)

仅供记录,应在服务器端设置Allow Access标头,即在您无法控制的ideone.com上。那时,你所能做的只是easyXDM