我已经看到了所有HTTP状态代码的列表。 但对我来说,似乎没有代码#34;电子邮件未经验证" (用于身份验证/授权)。 你有没有遇到同样的问题"?您使用了什么HTTP状态代码?
我想它应该是以4开头的代码,因为它是"客户端错误"。
答案 0 :(得分:13)
4xx
类状态代码适用于客户端似乎错误的情况:
4xx
(客户端错误)类状态代码表示客户端 似乎有错误。除了回复HEAD
请求时, 服务器应该发送一个包含对的解释的表示 错误情况,无论是暂时的还是永久的 条件。这些状态代码适用于任何请求方法。 用户代理应该向用户显示任何包含的表示。
对于身份验证和授权,401
和403
分别是要使用的正确状态代码。无论状态代码如何,您都应该始终在响应有效负载中描述错误的原因。
401
未经授权将此状态代码用于HTTP 身份验证的问题,即无效凭据。
401
(未授权)状态代码表示请求尚未执行 已被应用,因为它缺乏有效的身份验证凭据 目标资源。生成401
响应的服务器必须发送 包含至少一个的WWW-Authenticate
标题字段 适用于目标资源的挑战。如果请求包含身份验证凭据,那么
401
回复表明授权已被拒绝 凭证即可。用户代理可以用新的或重复请求 替换了Authorization
标头字段。如果401
响应包含与先前响应相同的挑战,以及 用户代理已经尝试过至少一次身份验证 用户代理应该将所附的表示呈现给 用户,因为它通常包含相关的诊断信息。
403
禁止将此状态代码用于授权的问题,即凭据有效但不足以授予访问权限。
403
(禁止)状态代码表示服务器已理解 请求但拒绝授权。希望的服务器 公开为什么禁止请求可以描述 响应有效负载中的原因(如果有的话)。如果请求中提供了身份验证凭据,则 服务器认为它们不足以授予访问权限。客户端 不应该自动重复请求 证书。客户端可以用新的或不同的方式重复请求 证书。但是,出于原因可能会禁止请求 与凭证无关。 [...]
答案 1 :(得分:2)
虽然CodeCaster作为评论提供了一个非常明确的答案,但正确的有时候是不合适的。
首先,您会在规格中看到没有提及的电子邮件地址。同样地,没有提到鞋子尺寸,模型铁路仪表,狗的品种或许多其他东西。它与HTTP无关。这只是一个数据项。
您似乎有一些与此数据项相关联的状态,您可以将其用于身份验证目的 - 但不提供该状态的任何解释以及如何应用该状态。我认为你的意思是"未经验证" state表示数据项与用户交互的用户之间的唯一关联是用户的断言。此外,您不允许用户使用此身份验证作为令牌。
看起来我在这里似乎很迂腐 - 但还有其他有效的解释"电子邮件未经过验证"。您应该在问题中提供更多信息。
你的故事还有另一个差距:我们在这里要求的是哪个要求?同样,我冒昧地假设请求是尝试进行身份验证。
在这种情况下,请求没有任何内在错误。客户端本质上没有任何错误。服务器上没有任何内在错误。不允许用户进行身份验证是基于数据的策略决策。
您的问题中缺少的另一个重要信息是实际发出请求的内容。如果它是由浏览器发送的表单,则默认情况下,将200 OK(或204,或重定向到200)以外的任何内容返回给MSIE将导致浏览器显示内部消息而不是内容你发送。
OTOH如果客户端是在用户设备上运行的应用程序,或者是Ajax请求,那么您可以控制API并定义自己的语义。如果要返回692状态代码来表示此条件,则可以返回692错误代码。您甚至可以在响应中注入自己的标题(按照惯例,这些标题应以' X - '开头)。
在定义的状态下,身份验证失败。但是返回401响应将提示浏览器尝试HTTP身份验证 - 这并不能解决问题。
恕我直言,最近的现有代码是403或422。但根据您提供的信息,我无法说明您应该使用的内容。