使用 OPTIONS 的 RESTful API 授权/权限

You*_*Ken 7 permissions rest authorization api-design http-options-method

HTTPOPTIONS请求是否适合确定用户的授权?

我见过 HTTPOPTIONS请求用于预检以检查请求是否有效,但是可以使用它来确定用户对特定资源的访问权限吗?

使用案例

资源显示在页面上。有一个编辑表单用于PUT更新资源。如果请求显示OPTIONS /resource/1它接受PUT,则会显示编辑按钮。

问题

  1. 请求是否OPTIONS适合返回特定用户有权访问的动词以确定授权/权限?

  2. 请求标头信息是否OPTIONS应该在前端代码中使用(或者只是预检验证)?

  3. 是否有任何标准用于通过 REST API 确定经过身份验证的用户的权限?

Aru*_*han 0

根据Mozilla 文档的 OPTIONS 选项,您的问题的答案是“是”。但是,我们需要为所有 HTTP 方法(GET、POST、PUT 和 DELETE)添加授权检查,因为实际数据是通过这些方法访问的。

原因如下:

  1. 通常 OPTIONS 在 POST 之前由 Web 浏览器调用(用于 CORS 检查)。不确定所有 API 客户端都会调用此方法(例如服务器到服务器通信)
  2. 即使您为 OPTIONS 添加了授权支持,您也需要为 HTTP 的所有剩余方法添加它。