哪个HTTP状态码用于不提供所需的参数?

我有几个页面devise用AJAX调用 – 我让他们返回一个不正常的状态代码,如果他们不能显示,我的JavaScript将显示相应的错误框。

例如,如果用户没有通过身份validation,或者他们的会话超时,他们尝试调用其中一个AJAX页面,则会返回401 Unathorized

我也有一些返回500 Internal Server Error如果真的发生奇怪的事情发生在服务器端。

如果其中一个页面被调用而没有需要的参数,我应该返回哪个状态码? (因此不能返回任何内容)。

我查看了关于HTTP状态代码的维基百科文章 ,但是我能find的最接近的代码是:

422不可处理的实体
请求格式良好,但由于语义错误无法遵循。

编辑:上面的代码是WebDAV特定的,因此在这种情况下不太合适

任何人都可以想到一个合适的代码返回?

如果其中一个页面被调用而没有需要的参数,我应该返回哪个状态码? (因此不能返回任何内容)。

你可以select404 Not Found

服务器没有find与Request-URI匹配的任何东西[假设你所需的参数是URI的一部分,即$_GET ] 。 没有迹象表明病情是暂时的还是永久性的。 如果服务器通过一些内部可configuration的机制知道旧资源永久不可用并且没有转发地址,则应该使用410(Gone)状态码。 当服务器不希望揭示为什么请求被拒绝,或者没有其他响应适用时,通常使用这种状态码。

(突出我)

404 Not Found400 Bad Request一个子集,可以采取,因为它是非常清楚这是什么:

由于格式错误,服务器无法理解请求。 客户端不应该不加修改地重复请求。

我实际上不能build议你select一个WEBDAV响应代码,这个代码对于使用超文本的HTTP客户端来说是不存在的,但是你可以,这是完全有效的,你是服务器编码器,实际上你可以接受任何你认为合适的HTTP响应代码对于你也是devise者的HTTP客户端来说:

11.2。 422不可处理的实体

422(不可处理的实体)状态码意味着服务器理解请求实体的内容types(因此415(不支持的媒体types)状态码是不合适的),并且请求实体的语法是正确的(因此400 )状态码不合适),但无法处理包含的说明。 例如,如果XML请求主体包含格式正确(即,语法正确),但语义错误的XML指令,则可能会出现此错误情况。

IIRC请求实体是请求主体。 所以,如果你正在与请求机构合作,那么朱利安写道可能是合适的。


你评论说:

恕我直言,400的文字说话格式不正确。 我会假设这里的语法涉及到客户端发送到服务器的HTTPstring的语法。

这可能是,但它可以是任何语法expression的,整个请求,只有一些请求头,或者一个特定的请求头,请求的URI等。400不是专门关于“HTTPstring语法”,它实际上是一般的答案客户端错误:

4xx类状态码用于客户端似乎有错误的情况。 除了响应HEAD请求外,服务器应该包含一个包含错误情况说明的实体,以及它是临时还是永久状态。 这些状态码适用于任何请求方法。 用户代理应该向用户显示任何包含的实体。

重要的是在这里,你必须告诉客户出了什么问题。 状态码只是告诉出了什么地方出了问题(在4xx类中),但是HTTP并没有专门devise成使缺less的查询信息部分参数成为错误条件。 事实上,URI只知道有一个查询信息部分,而不是它的意思。

如果你认为400太宽泛,我build议你select404如果问题是URI相关的,例如$_GETvariables。

我不知道RFC编写者的意图,但是我所见过的状态代码在这种情况下是400错误请求

422是一个常规的HTTP状态码; 它在WebDAV之外使用。 与其他人所说的相反,这是没有问题的。 HTTP有一个状态码registry的原因。

http://www.iana.org/assignments/http-status-codes

描述为400

由于格式错误 ,服务器无法理解请求。 客户端不应该不加修改地重复请求。

(强调我的)

这就说明格式错误,当浏览器向服务器发送请求时不是这种情况。 它只是缺less参数的情况下(虽然没有格式错误)。

我会build议坚持404)

(专家纠正我,如果我错了任何地方:))

仔细阅读:

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

422是一个WebDAV的具体事情,我还没有看到它用于其他任何事情。

400,即使不是为了这个特定的目的,似乎是一个普遍的select。

404也是一个可行的select,如果你的API是RESTful或类似的(使用URI的path部分来指示search参数)