如果根据Authorization规范,来自包含OAuth头的web服务器的响应,HTTP缓存是否会失败?
Request1 Authorization : AUTHTOKEN
Request2 Authorization : ANOTHERAUTOTOKEN在这种情况下,给定HTTP缓存,第二个请求将返回第一个用户的缓存响应。对于跨用户通用的内容来说,这不是一个问题,但是共享缓存为其他用户提供响应是错误的。
同样,如果我们使用一个Vary头并根据Authorization进行更改,这意味着我们的缓存将在每个令牌中存储一个缓存副本,这肯定违背了HTTP缓存的目的。浏览器本地缓存(私有)可以正常工作,但这仍然意味着每个用户至少每个会话一次原始请求。
编辑
该服务要求对所有请求进行授权,但是根据我所读到的内容,除非必须重新验证、公共和s-maxage,否则不应该从包含授权头的共享缓存中提供响应。
因此,我的问题是,如果一个API具有通用(所有用户的响应相同)和特定于用户的响应,那么缓存甚至是可能的吗?拥有s-maxage和公共头,但是授权头意味着如果我正确地跟踪RFC,缓存将解析UserB、UserC等的响应。
发布于 2015-03-03 16:56:25
请参阅http://greenbytes.de/tech/webdav/rfc7234.html#response.cacheability
“缓存不能存储对任何请求的响应,除非:缓存理解请求方法并将其定义为可缓存,并且.如果缓存是共享的,则授权头字段(见RFC7235第4.2节)不会出现在请求中,除非响应显式允许它,”
发布于 2021-03-17 13:08:29
我不确定,但是您认为在具有唯一每个用户校验和值的自定义头上会发生什么变化:
x-login-checksum: john_903243482
Vary: x-login-checksum在我看来,在本例中,我们可以缓存每个用户在会话之间的响应。那不管用吗?
https://stackoverflow.com/questions/28836657
复制相似问题