成功使用AJAX状态码<400?

5

基本上,问题在于是否存在任何情况使我在状态码低于400时调用成功回调函数是不好的?

查看HTTP状态码列表,我认为不会有问题,但我想要确认。我不认为我会得到1XX级别的代码,因为它们似乎大多在完整请求处理之前返回,而且readyState === 4(我不关心IE 7的122)。而且我仍然希望在302和304状态码上返回成功。所以status < 400是捕获所有这些的可接受方式吗?


1
使用HTTP状态码来表示处理脚本性能的成功/失败通常不是一个好主意。HTTP状态码应该仅用于指示http级别的故障,而不是“糟糕,您的搜索请求没有找到任何结果”。 - Marc B
@MarcB 这段代码将用于加载必要组件的成功和失败。这是为一个HTML 5游戏而设计的,我将使用一个初始脚本来加载所有内容,同时显示一个加载屏幕。这就是成功/失败变得重要的地方。如果某些内容无法加载,我需要处理它并显示相关消息。 - LoveAndCoding
1
然后让响应返回一个JSON对象,类似于{"error":true,"code":401},并进行检查。如果发出HTTP 401信号,则表示在HTTP级别上发生了某些事情,但实际上,关于HTTP请求的一切都完美无误。 - Marc B
@MarcB 我会在适当的情况下使用JSON。这实际上非常适用于HTTP错误代码处理,而不是“处理中出现错误”。我正在编写所有情况的代码。 - LoveAndCoding
2个回答

1

301 表示客户端需要使用新的URL再次进行HTTP调用。您的库或工具包是否已经为您处理了这个问题?


我没有使用库。这是所有自定义的JavaScript代码。如果“XMLHttpRequest”对象不能自动处理此操作,那么这很可能就是我的答案。 - LoveAndCoding
1
XMLHttpRequest规范表中可以看到:"如果响应是HTTP重定向(状态码为301、302、303或307),则必须透明地跟随它(除非它违反了安全性或无限循环的预防措施)。任何其他错误(包括401)都必须导致对象将该错误页面用作响应。" 看起来我使用301应该是安全的。 - LoveAndCoding
很好。你可能想把它作为一个答案添加上去——这比我阅读HTTP规范要权威得多。 :) - sarnold
已添加。我内心的怀疑者仍然认为在某些情况下这可能不起作用,但事情似乎表明它应该能够工作。 - LoveAndCoding

1

基于@sarnold's concerns的问题,看起来XMLHttpRequest规范说:

如果响应是HTTP重定向(状态码301、302、303或307),则必须透明地跟随它(除非它违反了安全或无限循环预防措施)。任何其他错误(包括401)都必须导致对象使用该错误页面作为响应。

这似乎表明对我而言,2XX或3XX响应都是有效的。 因此,简而言之,我的发现表明status<400是一个适当的状态响应检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接