Javascript 有没有办法在Chrome中检测HTTP服务器是否有响应?
我有一个脚本,它将一个特定的地址加载到一个子窗口中,并对其进行处理。如果我无法访问加载的文档,我想知道浏览器是因为网络或服务器关闭而加载了Chrome错误页面,还是因为我没有禁用实际窗口的安全性和站点隔离而出错。我得到了相同的Javascript 有没有办法在Chrome中检测HTTP服务器是否有响应?,javascript,google-chrome,cors,Javascript,Google Chrome,Cors,我有一个脚本,它将一个特定的地址加载到一个子窗口中,并对其进行处理。如果我无法访问加载的文档,我想知道浏览器是因为网络或服务器关闭而加载了Chrome错误页面,还是因为我没有禁用实际窗口的安全性和站点隔离而出错。我得到了相同的DOMException{stack:'错误:用原点阻止了一个帧“…”在这两种情况下,我都考虑过使用navigator.onLine和/或使用XHR作为可能的解决方案,但我不确定这是否可行。如果没有必要,我不想试验几天。有人解决了这个问题吗 结论: 我最终使用了一个带有异步
DOMException{stack:'错误:用原点阻止了一个帧“…”在这两种情况下,我都考虑过使用navigator.onLine
和/或使用XHR作为可能的解决方案,但我不确定这是否可行。如果没有必要,我不想试验几天。有人解决了这个问题吗
结论:
我最终使用了一个带有异步函数的已接受答案的修改版本:
异步函数isAlive(url){
试一试{
等待获取(url,{mode:'no cors'});
返回true;
}捕获(错误){
返回false;
}
}
(异步函数main(){
常量地址=[
'https://google.com',
'https://reallyf4kewebsite.com',
'/',
'https://google.com/foo/bar/baz'
];
const results=wait Promise.all(addresses.map((address)=>isAlive(address));
address.forEach((address,index)=>console.log(address,results[index]);
})();
您可以通过对服务器执行无cors请求来知道它是否处于活动状态
但是您将无法获得更多的信息,即错误重定向(404、501等)将被视为活动的
这是因为,虽然这种模式允许我们发送请求,就好像没有CORS限制一样,但您将得到的响应实际上是不透明的,我们的脚本将无法访问“映射到某个响应的URL”以外的任何其他信息
函数isAlive(url){
返回获取(url,{mode:'no cors'})
.然后(r=>true)
.catch(r=>false);
}
伊莎莉https://google.com')
.然后(r=>console.log('google',r));
伊莎莉https://reallyf4kewebsite.com')
.then(r=>console.log('reallyf4kewebsite',r));
isAlive(“/”)
.then(r=>console.log('stacksnippets',r));
伊莎莉https://google.com/foo/bar/baz')
。然后(r=>console.log('404重定向',r));