2016-01-13 28 views
0

我的客戶端在其服務器上運行Web服務,該服務接受Soap請求並返回SOAP響應。我唯一擁有的就是它運行的IP地址,Port和一些示例Soap請求字符串。 問題是,當我在Mozilla的SOA客戶端中使用給定的IP地址和SOAP請求字符串運行Soap請求時,我得到的響應正確。但是,當我嘗試在我的本地項目中獲得相同的結果時,「XMLHttpRequest無法加載http://XXX.XX.XX.XXX。請求的資源上沒有」Access-Control-Allow-Origin「標頭」錯誤。請找到正在使用的下面的代碼。Javascript XMLHttpRequest無法加載http://XX.XX.XX。請求的資源上沒有'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

http://xx.xx.xx.xx調用的Web服務並不在它的響應頭返回Access-Control-Allow-Origin,因此請求被因爲跨域資源共享(CORS)的否認天賦。你可以read more about CORS here

您的Web服務需要將Access-Control-Allow-Origin添加到服務的Response標題中,以便您能夠避開此錯誤。解決方案取決於託管服務的Web服務器的類型。

相關問題