基本上,问题在于是否存在任何情况使我在状态码低于400时调用成功回调函数是不好的?
查看HTTP状态码列表,我认为不会有问题,但我想要确认。我不认为我会得到1XX级别的代码,因为它们似乎大多在完整请求处理之前返回,而且readyState === 4
(我不关心IE 7的122)。而且我仍然希望在302和304状态码上返回成功。所以status < 400
是捕获所有这些的可接受方式吗?
基本上,问题在于是否存在任何情况使我在状态码低于400时调用成功回调函数是不好的?
查看HTTP状态码列表,我认为不会有问题,但我想要确认。我不认为我会得到1XX级别的代码,因为它们似乎大多在完整请求处理之前返回,而且readyState === 4
(我不关心IE 7的122)。而且我仍然希望在302和304状态码上返回成功。所以status < 400
是捕获所有这些的可接受方式吗?
301
表示客户端需要使用新的URL再次进行HTTP调用。您的库或工具包是否已经为您处理了这个问题?
XMLHttpRequest
规范表中可以看到:"如果响应是HTTP重定向(状态码为301、302、303或307),则必须透明地跟随它(除非它违反了安全性或无限循环的预防措施)。任何其他错误(包括401)都必须导致对象将该错误页面用作响应。" 看起来我使用301应该是安全的。 - LoveAndCoding基于@sarnold's concerns的问题,看起来XMLHttpRequest
规范说:
如果响应是HTTP重定向(状态码301、302、303或307),则必须透明地跟随它(除非它违反了安全或无限循环预防措施)。任何其他错误(包括401)都必须导致对象使用该错误页面作为响应。
这似乎表明对我而言,2XX或3XX响应都是有效的。 因此,简而言之,我的发现表明status<400
是一个适当的状态响应检查。
{"error":true,"code":401}
,并进行检查。如果发出HTTP 401信号,则表示在HTTP级别上发生了某些事情,但实际上,关于HTTP请求的一切都完美无误。 - Marc B