我面对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;
提前致谢。
答案 0 :(得分:1)
这是YUI的链接,您可能会发现它很有用。
http://developer.yahoo.com/yql/guide/yql-jsonp-x.html
他们编写了一个回调函数,它本质上是一个允许返回XML的信封。
答案 1 :(得分:0)
仅供记录,应在服务器端设置Allow Access标头,即在您无法控制的ideone.com上。那时,你所能做的只是easyXDM。