rest - 经过身份验证的 REST api 的 HTTP 缓存

标签 rest api http caching

我目前正在构建 REST API。无论谁在访问资源,我创建的许多资源始终是相同的。少数没有的将具有 Vary: Authorization header 。

有两个异常(exception):

  1. 如果您未通过身份验证,您将收到 401 响应。
  2. 对于某些您无权访问的资源,您可能会收到 403 响应。

我的问题是,在这种情况下是否仍然可以正确设置缓存。特别是,我想使用反向代理(例如 nginx、varnish 或 haproxy)来卸载主服务。

这个问题有优雅的解决方案吗?

最佳答案

变化:授权是不必要的;对具有授权的请求的响应自动是私有(private)的,并且不会被共享缓存缓存。

您可以发送Cache-Control: public来覆盖它;可以使用正常规则缓存响应。

但是,如果您希望这些响应保持经过身份验证,则需要强制进行身份验证。您还可以通过发送Cache-Control: no-cache来做到这一点,这将强制缓存在提供存储的响应之前检查源。

如果您只是想让反向代理(例如 Varnish、nginx)进行缓存,则很可能它有一种配置方式可以在“边缘”上实现身份验证,从而提供服务当请求经过正确的身份验证时,缓存中的响应。查看其文档以了解详细信息。

关于rest - 经过身份验证的 REST api 的 HTTP 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40159967/

相关文章:

rest - 通过 HTTPs 使用 REST 服务时出错

java - 在 REST 网络服务中使用 URL 模式 as/*?

Java REST WS下载docx

php - 如何在 Asana 中按用户获取任务

android - 如何为仅返回 bool 值的 API 编写 API 调用作为 android 中 retrofit 2 的响应?

angular - HTTP 使用 firebase Id_token 从 API 获取 Angular 4

javascript - 从 JavaScript Web 服务客户端发送 CORS POST 请求返回 http 405 错误

具有主要方法的 java Jersey 休息服务器?

json - 从 Android 设备向服务器发送 JSON 消息

php - HTTP 内容类型响应中的错误字符集