如何使用JavaScript检查服务器状态

时间:2018-09-17 12:00:12

标签: javascript jquery ajax cors

我正在尝试编写一个脚本,使我可以检查服务器的在线离线状态。但是,我目前遇到的问题是,当“ Access-Control-Allow-Origin”设置为*

时,由于某些原因 Firefox 不会停止加载某些内容

以下代码显示了我以前的状态:

$(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 :(得分:0)

如果服务器在另一个域中,则您需要执行适当的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 cors,具体取决于它)

答案 1 :(得分:0)

您需要调用document.close()。如果尚未打开文档,则document.write()在内部调用document.open。只要未使用document.close再次关闭该文档,浏览器就会指示该页面可能会更改,因此将一直等待。

已在此处回答::: FF keeps spinning after document.write()