混合 200(正常)和 403(禁止)HTTP 响应

Posted

技术标签:

【中文标题】混合 200(正常)和 403(禁止)HTTP 响应【英文标题】:Mixture between 200 (OK) and 403 (Forbidden) HTTP response 【发布时间】:2022-01-06 03:33:00 【问题描述】:

你知道这个用例是否有 HTTP 响应代码: “允许用户查看被调用资源的一小部分,但不能查看全部”。

这听起来像是 200 响应代码(因为允许用户检索部分资源)和 403 响应代码(因为不允许用户查看所有资源)之间的混合。

我猜 206 响应代码(部分内容)有点意思。但根据 MDN Web Docs*,此响应听起来非常“技术性”,而不是特定于业务案例。

感谢您的帮助!

*https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206

【问题讨论】:

【参考方案1】:

它仍然是状态 200,因为他们成功地获取了他们有权访问的数据。如果他们获得了他们有权访问的数据,是否有其他他们无法访问的数据都没有区别。如果他们不尝试访问其他数据,也没有理由告诉他们他们无权访问这些数据。

206 表示您正在以较小的部分发送他们有权访问的数据。

想象一个用户端点。管理员可以访问所有用户信息,而普通用户只能访问他们自己的信息。因此,您可以使用 /user/ 获取所有用户,使用 /user/:id 获取特定用户。

如果普通用户访问 /user/:id ,其中 id 是他们自己的 id,他们应该得到 200。如果他们尝试访问 /user/ 或 /user/:id 而 id 不是他们的 id,他们应该得到 403 (因为他们不允许使用前者并允许使用后者,但不能获取该 id 的数据)。如果他们没有登录,他们应该得到一个 401(如果他们登录了,他们是否可以访问它甚至都没有关系)。

如果您只有一个 /user/ 端点,则相同,其中数据基于例如返回他们的 id 存储在 cookie 中。 如果返回数据:200。如果不允许他们使用该端点:403。同样,如果他们没有登录:401。

【讨论】:

以上是关于混合 200(正常)和 403(禁止)HTTP 响应的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 "HTTP错误403-禁止访问 "问题

HEAD 请求在 GET “200 ok”时收到“403 禁止”?

仅在 https 上出现禁止的 403 错误,但 url http 工作正常

403 禁止网站资源(js、png、css)但权限正常?

如何解决安装IIS时出现HTTP错误403禁止访问?

IIS 7.5、8.0、8.5 HTTP 错误 403.14 - 安装干净的 Windows 后被禁止