我试图通过jquery使用web服务,但它会抛出此错误No'Access-Control-Allow-Origin'

时间:2015-06-18 13:23:55

标签: jquery web-services cors

我正在尝试通过jquery使用web服务,但它会抛出此错误:

  

请求时没有'Access-Control-Allow-Origin'标头   资源。因此不允许原点'null'访问。响应   有HTTP状态代码500。

我读到它与“跨域”有关但我无法解决它。

我的代码如下所示:

    <script src="js/jquery.soap.js"></script>

    <script>


        console.log("Entering processPeticion...");    

        // OBTENGO EL BARRIO A PARTIR DE LATITUD Y LONGITUD             
        var wsUrl = "http://gisdesa.mardelplata.gob.ar/opendata/ws.php/latlong_barrio";

        var soapRequest =
            '<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:open="http://192.168.0.235/opendata"><soapenv:Header/><soapenv:Body><open:latlong_barrio soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><latitud xsi:type="xsd:string">-38.001095</latitud><longitud xsi:type="xsd:string">-57.551533</longitud><token xsi:type="xsd:string">wwfe345gQ3ed5T67g4Dase45F6fer</token></open:latlong_barrio></soapenv:Body></soapenv:Envelope>';

        $.ajax({
                type: "POST",                    
                url: wsUrl,
                contentType: "text/xml",
                dataType: "xml",
                data: soapRequest,
                success: processSuccess,
                error: processError
        });

       function processSuccess(data, status, req) {


            console.log("Entering processPeticion.success()...");

            var barrioCodigo;
            var barrioDescripcion;

            var myObj = new Array();

            if (status == "success"){

                barrioCodigo = $(req.responseXML)
                .find("latlong_barrioResponse")
                .find("return")
                .find("codigo").text();
                console.log(barrioCodigo);    

                barrioDescripcion = $(req.responseXML)
                .find("latlong_barrioResponse")
                .find("return")
                .find("descripcion").text();
                console.log(barrioDescripcion);                        

            }

        }

        function processError(data, status, req) {        

            console.log("Entering processPeticion.processError()...");

        }                 

    </script>

任何帮助?

2 个答案:

答案 0 :(得分:0)

尝试此请求

$。AJAX({

  type: "POST",                    
  url: wsUrl,
  contentType: "text/xml",
  dataType: "xml",
  crossDomain: true,
  data: soapRequest,
  success: processSuccess,
  error: processError
});

答案 1 :(得分:0)

您尝试从客户端代码调用SOAP Web服务,这几乎总是一个坏主意。大多数Web服务实现从不返回Access-Control-Allow-Origin标头,因此,由于浏览器CORS Policy,您将永远无法从客户端代码调用这些Web服务。如果您的应用程序有服务器端后端,请考虑在服务器上实现对第三方Web服务的调用,并通过JSON将响应传递给您的前端。

相关问题