http - 使用 HEAD 请求揭示 protected 资源的存在是否是 RESTful?

标签 http rest architecture

我有一个 RESTful 资源,其表示只能由经过身份验证的客户端检索。在未经身份验证的客户端发出 GET 请求的情况下,将返回 401。

另一方面,我希望未经身份验证的客户端能够确定资源是否存在。在这种情况下,我正在考虑让 HEAD 请求在资源确实存在时返回 200,如果不存在则返回 404。

RFC 2616 在第 9.4 节中说明了以下关于 HEAD 请求的内容

The metainformation contained in the HTTP headers in response to a HEAD request SHOULD be identical to the information sent in response to a GET request.

这种方法是否适合 RESTful?

作为替代方案,我可以让 GET 和 HEAD 请求为不存在的资源返回 404,如果请求存在但客户端无权返回 401。

最佳答案

我会走 404/401 路线。它更简单,更正交。也因为 HEAD 定义的第一行是:

The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response.

这将为不支持 HEAD 的 HTTP 客户端留出空间。未经身份验证,他们可以简单地执行 GET 以确定资源的存在。无需 HEAD 支持。

关于http - 使用 HEAD 请求揭示 protected 资源的存在是否是 RESTful?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15643684/

相关文章:

javascript - 如何从图像 URL 获取状态代码? JavaScript

http - 单元测试-如何在 flutter 中模拟第三方库类Dio的参数

ruby-on-rails - Rails 3- Devise - 通过网络服务进行身份验证

http - 协议(protocol)不可知服务器的架构设计

javascript - 站点自动重定向

api - data!= null:必须将非null字符串提供给Text小部件

rest - 如何处理超时的 POST 请求

php - 将 REST API 中的 CRUD 限制为所有者

java - 全局并最终存储 SecurityManager 的检查是否可以接受

php - 当需要配置控制时,我应该如何存储多个相关模型?