Javascript 处理同步XHR连接错误
我一直在搜索,但找不到有关此问题的任何文档:当使用Microsoft提供的XMLHttpRequest接口发出同步HTTP请求时,如何处理连接/网络相关错误 我在wscript下工作,制作一个HTTP请求包装器,我想知道如何使用XMLHttpRequest接口处理HTTP请求的不同连接/网络错误(与服务器响应报告的错误相反) 为了澄清,我不仅想知道是否发生了连接/网络错误,还想知道如何确定发生了哪种类型的错误,以便不同的错误会导致不同的处理。例如,Javascript 处理同步XHR连接错误,javascript,xmlhttprequest,jscript,wsh,Javascript,Xmlhttprequest,Jscript,Wsh,我一直在搜索,但找不到有关此问题的任何文档:当使用Microsoft提供的XMLHttpRequest接口发出同步HTTP请求时,如何处理连接/网络相关错误 我在wscript下工作,制作一个HTTP请求包装器,我想知道如何使用XMLHttpRequest接口处理HTTP请求的不同连接/网络错误(与服务器响应报告的错误相反) 为了澄清,我不仅想知道是否发生了连接/网络错误,还想知道如何确定发生了哪种类型的错误,以便不同的错误会导致不同的处理。例如,连接超时错误、连接被拒绝错误和dns解析错误之间
连接超时
错误、连接被拒绝
错误和dns解析
错误之间会有所不同
// httpObj is a valid Microsoft/ActiveX provided XMLHttpRequest object name
function () {
var request = new ActiveXObject(httpObj);
request.open(this.httpMethod, this.httpUrl, false);
request.timeout = this.httpTimeout;
request.setRequestHeader("Connection", "close");
request.send(this.httpData);
// How would I handle connection/network-related errors?
}
(我从未使用过ActiveX请求,但我假设它们的工作方式类似于XMLHttpRequest
;如果我错了,我会很高兴地删除这个答案。)
如果脚本能够从服务器读取HTTP错误响应,则请求对象的status
属性将设置为HTTP错误代码(404
,500
,等等),并且statusText
属性将设置为HTTP错误的描述
否则,status
属性将为0
,表示网络故障或缺少跨源CORS权限
function () {
...
request.send(this.httpData);
if(request.status == 0) {
// no response from server, error or otherwise
}
if(request.status == 404) {
// there was a response from the server; it was a 404
}
}
XHRAPI不公开任何区分网络错误类型的方法。ActiveX对象可能有办法做到这一点,但我不知道它会是什么,如果它存在的话。我不想处理响应状态错误(通过服务器重新运行的错误),只想处理连接问题连接超时和DNS解析错误之间有何区别,例如?@srject我以为您想区分HTTP错误响应和网络错误,但我从您的编辑中看到,您实际上想区分不同类型的连接错误。这不能使用XHRAPI来完成,因为XHRAPI不区分网络错误的类型。也许可以使用一些专有的ActiveX行为,但如果可能的话,我不知道如何使用;ActiveX XHR和XHR api之间没有什么区别,因为界面最初是MS/IE/ActiveX的发明。如果用户可能报告未知的专有界面/行为,我不会接受这个答案。如果没有人回答,我就接受你的回答。