社区首页 >问答首页 >用403状态代码响应的用例

用403状态代码响应的用例
EN

Stack Overflow用户
提问于 2014-12-26 06:03:32
回答 4查看 793关注 0票数 2

我最近开始开发Java应用程序,我正在尝试更多地了解HTTP状态代码,以及应该在什么时候使用它们。

我遇到的一种情况是,当用户登录并希望检查订单的状态时。要求用户不能检查不属于他们的订单的状态。

例如,检查订单的URL是:

代码语言:javascript
代码运行次数:0
复制
mysite.com/order/status?id=22594

处理此请求的servlet将检查ID参数,并从数据库中获取订单。

如果用户输入了他们没有提交的订单的ID,那么是否应该返回403,或者用未找到的订单进行响应?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-26 06:15:33

在您的典型情况下,我可以想到以下用例:

订单Id未找到

  • 发送一个404。秩序不存在。

订单Id属于其他人.

  • 如果用户已登录,则发送403。(403的意思是:“我知道你是谁,不允许你访问这个资源)
  • 发送一个404。有时它适合发送这种状态。您不希望让最终客户端知道资源是否存在。该资源要么存在于此经过身份验证和授权的用户,要么不存在。

用户未登录

  • 尝试访问资源时发送401“身份验证所需”。
票数 1
EN

Stack Overflow用户

发布于 2014-12-26 06:14:30

如果用户没有提交订单,或者订单不属于用户,则返回以下任何一个响应是合适的:

  1. 404-资源未找到。如果其他用户存在此订单id,则不会向用户显示此命令id。
  2. 401-Unauthorized. --这将显示订单存在,但不属于请求用户。

从安全性的角度来看,最好返回404。

票数 4
EN

Stack Overflow用户

发布于 2014-12-26 06:16:24

来自w3.org

服务器理解请求,但拒绝满足请求。授权于事无补,不应重复请求。如果请求方法不是HEAD,并且服务器希望公开请求未被满足的原因,则应该在实体中描述拒绝的原因。如果服务器不希望将此信息提供给客户端,则可以使用状态代码404 (未找到)。

在您的情况下,出于安全原因,最好不要显示订单,但通常答案是403。

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

https://stackoverflow.com/questions/27658148

复制
相关文章

相似问题

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