首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有授权的HTTP缓存

带有授权的HTTP缓存
EN

Stack Overflow用户
提问于 2015-03-03 16:19:04
回答 2查看 9.6K关注 0票数 18

如果根据Authorization规范,来自包含OAuth头的web服务器的响应,HTTP缓存是否会失败?

代码语言:javascript
复制
Request1 Authorization : AUTHTOKEN
Request2 Authorization : ANOTHERAUTOTOKEN

在这种情况下,给定HTTP缓存,第二个请求将返回第一个用户的缓存响应。对于跨用户通用的内容来说,这不是一个问题,但是共享缓存为其他用户提供响应是错误的。

同样,如果我们使用一个Vary头并根据Authorization进行更改,这意味着我们的缓存将在每个令牌中存储一个缓存副本,这肯定违背了HTTP缓存的目的。浏览器本地缓存(私有)可以正常工作,但这仍然意味着每个用户至少每个会话一次原始请求。

编辑

该服务要求对所有请求进行授权,但是根据我所读到的内容,除非必须重新验证、公共和s-maxage,否则不应该从包含授权头的共享缓存中提供响应。

因此,我的问题是,如果一个API具有通用(所有用户的响应相同)和特定于用户的响应,那么缓存甚至是可能的吗?拥有s-maxage和公共头,但是授权头意味着如果我正确地跟踪RFC,缓存将解析UserB、UserC等的响应。

EN

回答 2

Stack Overflow用户

发布于 2015-03-03 16:56:25

请参阅http://greenbytes.de/tech/webdav/rfc7234.html#response.cacheability

“缓存不能存储对任何请求的响应,除非:缓存理解请求方法并将其定义为可缓存,并且.如果缓存是共享的,则授权头字段(见RFC7235第4.2节)不会出现在请求中,除非响应显式允许它,”

票数 7
EN

Stack Overflow用户

发布于 2021-03-17 13:08:29

我不确定,但是您认为在具有唯一每个用户校验和值的自定义头上会发生什么变化:

代码语言:javascript
复制
x-login-checksum: john_903243482
Vary: x-login-checksum

在我看来,在本例中,我们可以缓存每个用户在会话之间的响应。那不管用吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28836657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档