缓存控制专用于信息亭模式

时间:2016-02-12 01:12:14

标签: security http authentication caching browser

假设我公开了一个使用承载令牌认证(JWT)的REST服务(通过HTTPS),并使用Cache-Control: private标头响应GET请求。

现在假设我的应用程序用于自助服务终端模式(多个用户使用相同的浏览器会话作为相同的操作系统用户,想想网吧或其他东西)。 User1向资源发出经过身份验证的请求。

GET /api/resource
Authorization: bearer <token1>

响应以:

开头
HTTP/1.1 200 OK
Cache-Control: private

现在,User1退出我的应用程序并且User2登录。浏览器代表她向同一资源发出请求(但使用不同的JWT令牌)。

GET /api/resource
Authorization: bearer <token2>

现在我的问题是,浏览器是否会考虑从缓存中提供此服务,因为它是来自同一操作系统用户的相同请求?或者浏览器会考虑该决定中的Authorization值吗?

如果是前者,原始响应中的Vary: Authorization标头会改变该行为。

1 个答案:

答案 0 :(得分:3)

根据RFC 2616, Section 14.9.1Cache-Control: private响应标头确实意味着共享相同浏览器会话的多个信息亭用户将获得相同的缓存响应。

是的,如RFC 2616的Section 13.6所示,添加Vary: Authorization响应标头会有所帮助;它告诉缓存根据Vary响应头值中列出的请求头,从资源的不同“表示”中保留/选择。

希望这有帮助!