Как проверить состояние сервера с помощью JavaScript - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь написать скрипт, который позволяет мне проверять состояние серверов online или offline .Однако в настоящее время у меня есть проблема, что Firefox по какой-то причине не останавливает загрузку чего-либо, когда «Access-Control-Allow-Origin» установлен на *

Следующий код показывает мой предыдущий статус:

$(document).on('pagebeforeshow', function() {

  urlList = ["example.com"]

  xhr = function(url) {
      $.ajax({
          type: 'GET',
          timeout: 3000,
          async: true,
          url: url
      }).done(function (data, statusText, xhr) {
          var status = xhr.status;
          var head = xhr.getAllResponseHeaders;
          console.log("getallresponseheaders");
          if (status === 200) {
              document.writeln(url + "     ------  is online");
          }
          console.log("status : " + status);
          console.log("head : " + head);
          console.log("url: " + url)
      }).fail(function ()
      {
          console.log(url + " ----- is offline");
      });
  }
  for(var i = 0; i < urlList.length; i++) {
      xhr(urlList[i]);
  }
});

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вам нужно вызвать document.close (). document.write () внутренне вызывает document.open, если документ не был открыт. Пока документ не закрывается снова с помощью document.close, браузер будет показывать, что страница может быть изменена, и поэтому продолжает ждать.

Здесь ответили ::: FF продолжает вращаться после document.write ()

0 голосов
/ 17 сентября 2018

Если сервер находится в другом домене, то вам нужно выполнить правильный запрос CORE

$.ajax({
    type: "GET",
    url: tenantBaseUri+"/RestRequest/GetLogisticsServerRestResponse",
    headers: {
        "Content-Type": "application/json; charset=utf-8",
        "Accept": "application/json",
        "X-Requested-With": "XMLHttpRequest"
    },
    xhrFields: {
        withCredentials: true
    },
    crossDomain: true
}

А затем на стороне сервера (вы не упомянули, что вы используете для бэкэнда), вам нужно разрешить глагол OPTIONS(Chrome и Firefox отправляют это как предварительный запрос перед фактическим запросом CORS) и делают другие действия, чтобы разрешить CORS (например, в asp.net вам может понадобиться добавить некоторые пакеты CORS nuget, такие как owin.cors или asp.net, в зависимости от ситуации)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...