"未经验证的电子邮件的HTTP状态"

时间:2016-03-29 11:46:55

标签: http http-status-codes

我已经看到了所有HTTP状态代码的列表。 但对我来说,似乎没有代码#34;电子邮件未经验证" (用于身份验证/授权)。 你有没有遇到同样的问题"?您使用了什么HTTP状态代码?

我想它应该是以4开头的代码,因为它是"客户端错误"。

2 个答案:

答案 0 :(得分:13)

4xx类状态代码适用于客户端似乎错误的情况:

  

6.5. Client Error 4xx

     

4xx(客户端错误)类状态代码表示客户端   似乎有错误。除了回复HEAD请求时,   服务器应该发送一个包含对的解释的表示   错误情况,无论是暂时的还是永久的   条件。这些状态代码适用于任何请求方法。   用户代理应该向用户显示任何包含的表示。

对于身份验证授权401403分别是要使用的正确状态代码。无论状态代码如何,您都应该始终在响应有效负载中描述错误的原因。

401未经授权

将此状态代码用于HTTP 身份验证的问题,即无效凭据。

  

3.1. 401 Unauthorized

     

401(未授权)状态代码表示请求尚未执行   已被应用,因为它缺乏有效的身份验证凭据   目标资源。生成401响应的服务器必须发送   包含至少一个的WWW-Authenticate标题字段   适用于目标资源的挑战。

     

如果请求包含身份验证凭据,那么401   回复表明授权已被拒绝   凭证即可。用户代理可以用新的或重复请求   替换了Authorization标头字段。如果401   响应包含与先前响应相同的挑战,以及   用户代理已经尝试过至少一次身份验证   用户代理应该将所附的表示呈现给   用户,因为它通常包含相关的诊断信息。

403禁止

将此状态代码用于授权的问题,即凭据有效但不足以授予访问权限。

  

6.5.3. 403 Forbidden

     

403(禁止)状态代码表示服务器已理解   请求但拒绝授权。希望的服务器   公开为什么禁止请求可以描述   响应有效负载中的原因(如果有的话)。

     

如果请求中提供了身份验证凭据,则   服务器认为它们不足以授予访问权限。客户端   不应该自动重复请求   证书。客户端可以用新的或不同的方式重复请求   证书。但是,出于原因可能会禁止请求   与凭证无关。 [...]

答案 1 :(得分:2)

虽然CodeCaster作为评论提供了一个非常明确的答案,但正确的有时候是不合适的。

首先,您会在规格中看到没有提及的电子邮件地址。同样地,没有提到鞋子尺寸,模型铁路仪表,狗的品种或许多其他东西。它与HTTP无关。这只是一个数据项。

您似乎有一些与此数据项相关联的状态,您可以将其用于身份验证目的 - 但不提供该状态的任何解释以及如何应用该状态。我认为你的意思是"未经验证" state表示数据项与用户交互的用户之间的唯一关联是用户的断言。此外,您不允许用户使用此身份验证作为令牌。

看起来我在这里似乎很迂腐 - 但还有其他有效的解释"电子邮件未经过验证"。您应该在问题中提供更多信息。

你的故事还有另一个差距:我们在这里要求的是哪个要求?同样,我冒昧地假设请求是尝试进行身份验证。

在这种情况下,请求没有任何内在错误。客户端本质上没有任何错误。服务器上没有任何内在错误。不允许用户进行身份验证是基于数据的策略决策。

您的问题中缺少的另一个重要信息是实际发出请求的内容。如果它是由浏览器发送的表单,则默认情况下,将200 OK(或204,或重定向到200)以外的任何内容返回给MSIE将导致浏览器显示内部消息而不是内容你发送

OTOH如果客户端是在用户设备上运行的应用程序,或者是Ajax请求,那么您可以控制API并定义自己的语义。如果要返回692状态代码来表示此条件,则可以返回692错误代码。您甚至可以在响应中注入自己的标题(按照惯例,这些标题应以' X - '开头)。

在定义的状态下,身份验证失败。但是返回401响应将提示浏览器尝试HTTP身份验证 - 这并不能解决问题。

恕我直言,最近的现有代码是403或422。但根据您提供的信息,我无法说明您应该使用的内容。