Http 在不同情况下允许 header
Http allow header on different cases
我正在尝试创建一个有效的 Web 服务,但我对 header ALLOW 和他在不同情况下的 cors 版本有一些问题。
假设 GET /resource/42 有效并且有 header 允许 = 'GET,PUT'
以下情况我该怎么办:
1) 如果找不到资源 (401) ?
2) 如果资源需要授权 (401) ?
3) 如果资源不属于用户 (403) ?
4) 如果请求被拒绝 (400) 因为缺少 api-version header?
现在,如果我将 'GET' 替换为 OPTIONS
,我会遇到完全相同的问题
也许我对 HTTP 缺乏了解,但找不到完整和准确的文档。无论如何,谢谢你的帮助。
这是开始编写有关响应代码和方法类型的文档的好地方,它是 rfc 规范:https://www.rfc-editor.org/rfc/rfc7231
(完整的 HTTP 1.1 规范包含在 rfc 7230-7237 中)
找不到资源 - 通常最好 return 编辑为 404,但如果您知道它是故意消失的,您可以 return 410。
resource required auth - 一般为403,(但授权是一个更大的主题)
资源不属于用户 - 资源所有权不在规范中 - 您的应用程序可能想要返回归其他人所有的资源。响应仅描述状态。如果您允许提供资源,您可以发送一个常规的基于 200 的响应。如果您在确定所有权后明确只允许资源,并且您发现客户端没有确定为所有者,您可以发送 403 响应,或者如果您还想隐藏资源甚至存在的知识,您可以发送 404,这更取决于您的具体需求。
请求被拒绝,因为缺少 api-version header - 是的,400 在这里很合适。您可以在响应中包含一条消息,以解释为什么它被视为错误请求。
对于 OPTIONS 请求,还有许多其他帖子讨论了与特定请求相关的响应代码,例如:
https://whosebug.com/a/14703357/3417917
200 响应可用于传达资源的可用选项,但如果您想传达请求是错误的,则可以发送一般的 400 请求。
我正在尝试创建一个有效的 Web 服务,但我对 header ALLOW 和他在不同情况下的 cors 版本有一些问题。
假设 GET /resource/42 有效并且有 header 允许 = 'GET,PUT'
以下情况我该怎么办:
1) 如果找不到资源 (401) ?
2) 如果资源需要授权 (401) ?
3) 如果资源不属于用户 (403) ?
4) 如果请求被拒绝 (400) 因为缺少 api-version header?
现在,如果我将 'GET' 替换为 OPTIONS
,我会遇到完全相同的问题也许我对 HTTP 缺乏了解,但找不到完整和准确的文档。无论如何,谢谢你的帮助。
这是开始编写有关响应代码和方法类型的文档的好地方,它是 rfc 规范:https://www.rfc-editor.org/rfc/rfc7231
(完整的 HTTP 1.1 规范包含在 rfc 7230-7237 中)
找不到资源 - 通常最好 return 编辑为 404,但如果您知道它是故意消失的,您可以 return 410。
resource required auth - 一般为403,(但授权是一个更大的主题)
资源不属于用户 - 资源所有权不在规范中 - 您的应用程序可能想要返回归其他人所有的资源。响应仅描述状态。如果您允许提供资源,您可以发送一个常规的基于 200 的响应。如果您在确定所有权后明确只允许资源,并且您发现客户端没有确定为所有者,您可以发送 403 响应,或者如果您还想隐藏资源甚至存在的知识,您可以发送 404,这更取决于您的具体需求。
请求被拒绝,因为缺少 api-version header - 是的,400 在这里很合适。您可以在响应中包含一条消息,以解释为什么它被视为错误请求。
对于 OPTIONS 请求,还有许多其他帖子讨论了与特定请求相关的响应代码,例如: https://whosebug.com/a/14703357/3417917 200 响应可用于传达资源的可用选项,但如果您想传达请求是错误的,则可以发送一般的 400 请求。