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

问题描述 投票:0回答:2

我正在尝试编写一个脚本,允许我检查服务器的在线或离线状态。但是,我目前遇到的问题是,当“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]);
  }
});
javascript jquery ajax cors
2个回答
0
投票

你需要调用document.close()。如果文档尚未打开,document.write()会在内部调用document.open。只要文档没有再次使用document.close关闭,浏览器将指示页面可能会发生变化,因此一直在等待。

这已经回答了::: FF keeps spinning after document.write()


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,这取决于)

© www.soinside.com 2019 - 2024. All rights reserved.