所以我发现有用的是根据 MDN 的 HTTP 响应状态代码 符合资格的状态代码是:
现在,我正在考虑使用 401,但使用
error.name
或 error.code
的 JwtTokenExpired
。但后来我看到了400、406和412。我猜400是通用的,或者可能太通用了?这使得 406 或可能 412 更像它。
但我不确定。人们还没有在 StackOverflow 中问过这个问题。所以我认为值得讨论一下,并且知道有一定的标准。
这取决于您的安全级别。出于安全原因,如果某些答案不是为开发人员提供的信息,那么它们就没有关键信息。
例如,如果您正在与正在开发对您的 API 的调用的客户合作,您可以在沙箱环境中使用问题的完整响应,而在生产中,提供的信息会尝试减少到 0,以免向可能的攻击者提供任何信息。
也就是说,如果您的令牌像安全密钥一样工作,您可以使用
401
,或者甚至更好 428
(或 412
),因为前提条件未满足。对于这种情况,400
应该是最空洞的响应,因为只带来问题出在客户端的信息。为了充分保护并且完全没有信息,204
的反应会让任何敌人感到困惑,但这只是为了你的关心。
来自RFC 6585:
428 需要先决条件
428状态码表示源站需要
要求有条件。它的典型用途是避免“丢失更新”问题,其中 客户端获取资源的状态,修改它,然后将其放回 服务器,同时第三方修改了状态 服务器,导致冲突。 通过要求请求 有条件时,服务器可以确保客户端正在使用 正确的副本。
使用此状态代码的响应应解释如何重新提交 请求成功。 例如:
HTTP/1.1 428 前提条件所需内容类型:text/html