【发布时间】:2021-03-17 21:08:29
【问题描述】:
根据 OAuth 规范,如果来自 Web 服务器的响应包含 Authorization 标头,那么 HTTP 缓存是否没有用处?
Request1 Authorization : AUTHTOKEN
Request2 Authorization : ANOTHERAUTOTOKEN
在这种情况下,给定 HTTP 缓存,第二个请求将返回第一个用户的缓存响应。这对于跨用户通用的内容来说不是问题,但是对于共享缓存为其他用户提供响应来说,这感觉是错误的。
同样,如果我们使用 Vary 标头并根据 Authorization 变化,这意味着我们的缓存将存储每个令牌的缓存副本,这肯定会破坏 HTTP 缓存的目的。浏览器本地缓存(私有)可以正常工作,但这仍然意味着每个用户在每个会话中至少有一次原始请求。
编辑
有问题的服务需要对所有请求进行授权,但是根据我所读到的内容,除非存在 must-revalidate、public 和 s-maxage,否则不应执行来自共享缓存的包含 Authorization 标头的响应.
因此,我的问题是,如果 API 具有通用(所有用户的响应相同)和用户特定响应,那么缓存是否可能?拥有 s-maxage 和公共标头但授权标头意味着如果我正确遵循 RFC,缓存将解析 UserA 对 UserB、UserC 等的响应。
【问题讨论】:
-
能否请您更新一下您现在对授权资源的缓存方式?
标签: http caching http-caching