首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“此电子邮件已注册”对应的HTTP响应代码是什么?

“此电子邮件已注册”对应的HTTP响应代码是什么?
EN

Stack Overflow用户
提问于 2012-02-14 06:32:38
回答 3查看 65.3K关注 0票数 85

我正在创建一个RESTful应用程序接口,用于创建强制使用唯一电子邮件地址的用户:

成功的POST /usersHTTP 201 Created

如果我再次POST相同的电子邮件地址,响应码应该是什么?409 Conflict是合适的响应代码吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-14 09:15:05

是的,409是这里最合适的响应代码。即使你最有可能在成功时返回201,你仍然是一个被描述为集合的资源的POSTing,并且POSTing一个重复的电子邮件肯定与作为集合的“资源的当前状态”相冲突。如果可能,您应该返回一个包含问题描述和帮助解决问题的超链接的响应正文。

票数 107
EN

Stack Overflow用户

发布于 2015-09-12 03:45:12

虽然接受的答案在显示任务的正确状态代码方面是正确的,但我想补充的是,您正在引入一个安全漏洞。

如果您为帐户注册返回409,那么您只是公开了一个用于帐户枚举的服务。

取决于应用程序,如果api是公共的,等等,你可能想要返回201,即使帐户没有被创建。

票数 27
EN

Stack Overflow用户

发布于 2017-09-14 21:39:27

+1到Barts应答-出于安全原因。通常我会同意409是一个很好的状态码。它已经存在了。但在用户帐户/身份验证/授权等环境中,我倾向于不公开数据库中现有的用户帐户。

当然,在这个地方还有其他处理安全性的机制。如果您不介意公开少量的帐户,您可以在应用程序中添加一个行为,从一个IP返回多个409事件的401或403。

另一种选择(通常)是自己定义一个状态代码,使其具有不同于现有标准2xx变体的2xx。如果您不想将“已存在”作为错误处理,则可以选择此选项。但是,这将被视为非标准的,并且将具有与您的具体示例中的409相同的不安全字符。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9269040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档