2013-12-16 5 views
0

У меня есть сервер, на котором запущена служба, я хочу запустить с некоторым интервалом запрос ping для службы, чтобы я мог знать, когда он готов или нет.SOAP-запрос через jQuery AJAX

Получили следующий ping.dat файл:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:dvt="[private]"> 
    <soapenv:Header /> 
    <soapenv:Body> 
     <dvt:Ping/> 
    </soapenv:Body> 
</soapenv:Envelope> 

И следующие функции JavaScript (который будет включен в функцию setInterval()):

function doAjax() {  
    //load request document 
    $.ajax({ 
     cache: false, 
     crossDomain: true, 
     async: true,     
     dataType: 'xml', 
     type: 'POST', 
     data: null, 
     url: "./ping.dat", 
     error: function(xhr, sta, err){ alert(err); }, 
     success: function(ret, sta, xhr){ 
      //ping service 
      $.ajax({ 
       cache: false, 
       crossDomain: true, 
       async: false, 
       processData: false, 
       contentType: "text/xml; charset=\"UTF-8\"", 
       dataType: 'xml', 
       data: processXML(xhr.responseText), 
       type: 'POST', 
       url: "[private]", 
       error: function(xhr, sta, err){ 
        alert(err); 
       }, 
       success: function(ret, sta, xhr){ 
        $('#response').text($.trim(ret)); 
       }, 
       complete: function(xhr, sta){ 
        alert('complete'); 
       }, 
      }); 
     } 
    }); 
} 

function processXML(text){ 
    var ret = null; 
    if ((typeof(ret) !== 'undefined')&&(text !== null)&&(text.length !== 0)) 
     ret = $.trim(text.replace(/[\n\t]+/g, '')); 

    return ret; 
} 

Когда я использую SoapUI для вызова службы и нагрузки запрос ping, он работает.

При использовании функции JS, отчеты браузера:

OPTIONS [частные] 200 (OK) JQuery-1.10.2.js: 8706

XMLHttpRequest не может загрузить [частное]. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение 'http: / / localhost: 8080' поэтому не допускается.

Что вызывает это?

ответ

1

Сообщение ясно: Нет заголовка «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе.

Если вы действительно выполняете запрос Ajax для перекрестного домена, сервер должен ответить соответствующими HTTP-заголовками. Браузер выдает запрос OPTIONS HTTP и проверяет, поддерживает ли сервер доступ к полученным заголовкам. Если заголовки отсутствуют, браузер обязан вернуть ошибку и запретить запрос ресурсу.

Смотрите здесь для подробностей: HTTP access control (CORS)

SoapUI не влияет the same origin security policy как браузер есть, так вот почему пинговать веб-сервис от SoapUI работает.

Смежные вопросы