Невозможно подключиться к локальной службе отдыха с помощью AJAX (Статус: 0) - PullRequest
0 голосов
/ 23 сентября 2018

В настоящее время я пытаюсь подключиться к локальной службе отдыха с помощью AJAX.Однако кажется, что я не могу получить какую-либо связь.Служба отдыха работает под http://localhost:8080/LernApp/

. Для тестирования я попытался подключиться к http://localhost:8080/LernApp/user/, который возвращает JSON (GET).

Я проверил эту ссылку в своем браузере (работаетв порядке и отображает JSON) и с почтальоном (также работает нормально и получает ответ с кодом состояния 200 (ОК)).

Однако, если я пытаюсь подключиться к нему с помощью AJAX, происходит сбой (код состояния0).Моя первая попытка была такой:

var xhttp = typeof XMLHttpRequest != 'undefined' ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
    xhttp.open('GET','http://localhost:8080/LernApp/user/',true);
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.onreadystatechange = function() {
        var data;
        if(xhttp.readyState==4) {
            if(xhttp.status==200) {
                alert("OK");
            } else if(xhttp.status==404) {
                alert("404");
            } else {
                alert("ERROR CODE: " + xhttp.status);
            }
        }
    }
    xhttp.send();

Следующее, что я попробовал, было так:

$.ajax({
        type: 'GET',
        url:  'http://localhost:8080/LernApp/user/',
        dataType: 'json',
        async: true,
        success: function(result) {
            alert(result.message);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.status + ' ' + jqXHR.responseText);
        }
   });

И последнее, что я попробовал, было это:

$.ajax({
        type: "GET",
        url: 'http://localhost:8080/LernApp/user/',
        headers: {          
            Accept : "application/json"         
        }
    })
    .done(function (data, textStatus, jqXHR) {
        alert(data);
    })
    .fail(function(jqXHR, textStatus, errorThrown) {
        alert("STATUS: " + jqXHR.status);
    });

Ни один из них, кажется, не работает.Каждая функция возвращает код состояния 0. Кто-нибудь знает, что здесь происходит?Как я уже сказал: Браузер и Почтальон могут без проблем подключаться к URL и получать правильные данные.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 03 октября 2018

Я наконец нашел решение.Я должен был упомянуть больше о моем сервере (но так как сервер хорошо работал в браузере и в почтальоне, я предположил, что проблема будет на стороне клиента).Ну ... это была, конечно, проблема с сервером.Сервер работает на Apache Tomcat 9 со встроенной базой данных H2 и JAX-RS (для службы REST).

Если кто-то еще столкнется с моей проблемой: решение называется CORS.Если у вас возникла та же проблема, сначала запустите Google CORS, чтобы вы знали, что это такое, а затем вы можете выполнить все необходимые настройки в файле web.xml и / или context.xml вашего проекта Tomcat.

...