2015-11-04 55 views
0

我想创建一个有效的Web服务,但我有一些问题头允许,和他在不同情况下的Cors版本。HTTP允许在不同情况下的标头

假设GET /资源/ 42是有效的,并有头允许=在下列情况下, 'GET,PUT'

那我该怎么办:

1)如果没有找到资源(401)?

2)如果资源需要授权(401)?

3)如果资源不属于用户(403)?

4)如果请求由于缺少API版本头而被拒绝(400)?现在

,我有完全一样的问题,如果我取代由OPTIONS

也许我缺少对HTTP知识“GET”,但我找不到充分和精确的文档。无论如何,谢谢你的帮助。

回答

0

这是开始执行用于在响应代码和方法类型的文档的好地方,它是RFC规格:https://tools.ietf.org/html/rfc7231

(全HTTP 1.1规范由RFC 7230-7237覆盖)

1 )未找到资源 - 通常最好以404返回,但如果您知道它故意消失,则可以返回410。

2)资源需要身份验证 - 通常403,(但授权是一个更大的主题)

3)资源不被用户所拥有的 - 资源的所有权不属于规范 - 您的应用程序可能要以服务由其他人拥有的资源。回应只是描述了状态。如果您允许资源被投放,您可以发送常规的基于200的回复。如果在识别所有权之后明确地仅允许资源,并且您发现客户端没有识别为所有者,则可以发送403响应,或者如果您还想隐藏资源甚至存在的知识,则可以发送404,它更依赖于您的特定需求。

4)请求被拒绝,因为缺少API版本头 - 是400适合在这里。您可以在响应中包含一条消息,以解释为什么它被视为一个错误的请求。

对于OPTIONS请求,有许多该讲的响应代码只是被相关的具体要求其他职位,如: https://stackoverflow.com/a/14703357/3417917 200响应是蛮好用的输送可用于资源的选项,但如果您想表达请求不好,您可以发送一般400请求。

+0

完美,所以我会回答4xx的选择请求...我很确定200是强制性的。感谢您的帮助和链接 – farvilain

相关问题