Javascript XMLHttpRequest无法加载http://XX.XX.XX。 No' Access-Control-Allow-Origin'标头出现在请求的资源上

时间:2016-01-13 12:25:36

标签: soap xmlhttprequest

我的客户端在其服务器上运行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);

请帮助。 谢谢,

1 个答案:

答案 0 :(得分:0)

您在http://xx.xx.xx.xx调用的Web服务未在其响应标头中返回Access-Control-Allow-Origin,因此由于跨源资源共享(CORS)规范而拒绝该请求。

你可以read more about CORS here

您的Web服务需要将Access-Control-Allow-Origin添加到服务的Response标头中,以便您通过此错误。解决方案将取决于托管服务的Web服务器的类型。