我一直在搜索,找不到任何关于此问题的文档:当使用Microsoft提供的XMLHttpRequest接口发出同步HTTP请求时,如何处理与连接/网络相关的错误。
我正在wscript下工作,制作一个HTTP请求包装器,我想知道如何处理不同的连接/网络错误 (与服务器响应报告的错误相反)对于使用XMLHttpRequest接口的HTTP请求。
为了澄清,我不仅想知道是否发生连接/网络错误,而且还想知道如何确定发生了什么类型的错误,因此不同的错误会导致不同的处理。一个例子是connection timeout
错误,connection refused
错误和dns resolve
错误
// 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?
}
答案 0 :(得分:3)
(我从未使用过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
}
}
XHR API不公开任何方式来区分网络错误的类型。 ActiveX对象可能有一些方法可以做到,但我不知道它会是什么,如果它存在。