Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Вызов веб-сервиса soap (https://javascript.ru/forum/css-html/63414-vyzov-veb-servisa-soap.html)

roofless 06.06.2016 15:06

Вызов веб-сервиса soap
 
Задача: сделать запрос к веб-сервису soap, в ответе получить строку. Делал на SoapUI - там всё работает корректно. Делаю из js
function soap() {
            var xmlhttp = new XMLHttpRequest();
           
            var sr =
                '<?xml version="1.0" encoding="utf-8"?>' +
                '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v="http://www.omkit.ru/tfs/omniintegration/v1"> \
    <soapenv:Header/> \
    <soapenv:Body> \
        <v:GetLinksToWIOneS> \
            <v:RfcId>RFC-141811</v:RfcId> \
        </v:GetLinksToWIOneS> \
    </soapenv:Body> \
</soapenv:Envelope>';

            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4) {
                    if (xmlhttp.status == 200) {
                        alert('done. use firebug/console to see network response');
                    }
                }
            }
            // Send the POST request
 
            xmlhttp.withCredentials = true;
            xmlhttp.open('POST', 'http://vsys00658.d0.vsw.ru/TfsIntegrationService.svc', true);
            xmlhttp.setRequestHeader('Content-Type', 'text/xml');
            xmlhttp.send(sr);


xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
       alert(xmlhttp.responseXML.getElementById('GetLinksToWIOneSResult'));
         }
  }
};
};


при выполнении FireBug выдает
Код:

"NetworkError: 400 Bad Request - http://vsys00658.d0.vsw.ru/OMKIT.Tfs.Integration/TfsIntegrationService.svc"
TfsInte...ice.svc
Запрос из постороннего источника заблокирован:
Политика одного источника запрещает чтение удаленного ресурса на http://vsys00658.d0.vsw.ru/TfsIntegrationService.svc.
(Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin').

заголовки:
Код:

Accept       
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding       
gzip, deflate
Accept-Language       
ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Content-Length       
349
Content-Type       
text/xml
Host       
vsys00658.d0.vsw.ru
Origin       
null
User-Agent       
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0

по этой теме гугл выдает ссылки на ajax, как побороть это - не понимаю, ведь и запрос я делаю в рамках одного домена. добавлял vsys00658.d0.vsw.ru в доверенные узлы, тщетно.

Прошу помощи, тк 1снику сложно разобраться в такой простой задаче, а для интеграции потребовался именно javascript

destus 06.06.2016 18:47

Посмотри заголовок Origin в запросе и сравни с тем, куда отправляешь запрос. Или просто сделай так, чтобы сервер отсылал заголовок Access-Control-Allow-Origin : тут твой Origin или *. Подробнее https://learn.javascript.ru/xhr-crossdomain

roofless 07.06.2016 08:18

Цитата:

Сообщение от destus (Сообщение 418631)
Посмотри заголовок Origin в запросе и сравни с тем, куда отправляешь запрос. Или просто сделай так, чтобы сервер отсылал заголовок Access-Control-Allow-Origin : тут твой Origin или *. Подробнее https://learn.javascript.ru/xhr-crossdomain

подскажите, а как посмотреть заголовок в запросе?

destus 07.06.2016 08:38

roofless,
У тебя в сообщении выше есть, я не заметил. Видим тут Origin null, следовательно браузер и определяет запрос как кроссдоменный.

roofless 07.06.2016 08:59

Цитата:

Сообщение от destus (Сообщение 418683)
roofless,
У тебя в сообщении выше есть, я не заметил. Видим тут Origin null, следовательно браузер и определяет запрос как кроссдоменный.

да, но в чем тогда проблема? firebug неверно определяет ошибку?

Rise 07.06.2016 09:05

roofless, почему Origin null, откуда вы шлете запрос? С локального файла, тогда о каком "в рамках одного домена" может идти речь?

roofless 07.06.2016 09:15

Цитата:

Сообщение от Rise (Сообщение 418685)
roofless, почему Origin null, откуда вы шлете запрос? С локального файла, тогда о каком "в рамках одного домена" может идти речь?

с локального файла. моя машина и веб-сервис находятся в одном домене.
почему Origin null - для меня загадка, весь используемый код я предоставил

destus 07.06.2016 09:18

roofless,
надо файл на сервер загрузить и оттуда сервис вызывать.

Rise 07.06.2016 09:20

Цитата:

Сообщение от roofless (Сообщение 418689)
с локального файла. моя машина и веб-сервис находятся в одном домене.

Это как так что за чудеса?

roofless 07.06.2016 09:34

Цитата:

Сообщение от destus (Сообщение 418691)
roofless,
надо файл на сервер загрузить и оттуда сервис вызывать.

это невозможно, задача как раз и есть в вызове с любого клиента


Часовой пояс GMT +3, время: 00:46.