我的客户端在其服务器上运行Web服务,该服务接受Soap请求并返回soap响应。我唯一拥有的是它运行的IP地址,Port和一些示例Soap请求字符串。 问题是当我在Mozilla的SOA-Client中使用给定的IP地址和SOAP请求字符串运行Soap请求时,我得到了正确的响应。但是当我尝试在我的本地项目中实现相同时,我得到了" XMLHttpRequest无法加载http://XXX.XX.XX.XXX。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。"错误。请找到以下正在使用的代码。
var xmhtp = new XMLHttpRequest();
xmhtp.onreadystatechange = function () {
if (xmhtp.readyState == 4 && xmhtp.status == 200) {
document.getElementById("dvResponse").innerHTML = xmhtp.responseText;
}
};
var sr = '<?xml version="1.0"?>' +
'<SOAP-ENV:Envelope ' +
'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
'xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" ' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
'xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">' +
'<SOAP-ENV:Body>' +
'<m:dcGetProd xmlns:m="urn:abc.aa">' +
'<startTime xsi:type="xsd:dateTime">2015-11-30T08:00:00</startTime>' +
'<endTime xsi:type="xsd:dateTime">2016-01-11T18:15:00</endTime>' +
'<dcName xsi:type="xsd:string">Example1</dcName>' +
'</m:dcGetProd>' +
'</SOAP-ENV:Body>' +
'</SOAP-ENV:Envelope>';
xmhtp.open("POST", "http://XXX.XX.XX.XXX:80/", true);
// Send the POST request
xmhtp.send(sr);
请帮助。 谢谢,
答案 0 :(得分:0)
您在http://xx.xx.xx.xx
调用的Web服务未在其响应标头中返回Access-Control-Allow-Origin
,因此由于跨源资源共享(CORS)规范而拒绝该请求。
您的Web服务需要将Access-Control-Allow-Origin
添加到服务的Response标头中,以便您通过此错误。解决方案将取决于托管服务的Web服务器的类型。