我正在尝试编写一个脚本,使我可以检查服务器的在线或离线状态。但是,我目前遇到的问题是,当“ 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]);
}
});
答案 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()