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

时间:2016-10-20 16:39:04

标签: rest api http caching

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

有两个例外:

  1. 如果您未经过身份验证,则会收到401回复。
  2. 对于您无法访问的某些资源,您可能会收到403响应。
  3. 我的问题是,在这种情况下,仍然可以正确设置缓存。特别是,我想使用反向代理,如nginx,varnish或haproxy来卸载主服务。

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

1 个答案:

答案 0 :(得分:1)

Vary: Authorization是不必要的;对具有授权的请求的响应将自动为私有,并且不会被共享缓存缓存。

您可以发送Cache-Control: public来覆盖此内容;可以使用常规规则缓存对此的响应。

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

如果您只是希望让您的反向代理(例如,Varnish,nginx)进行缓存,那么它可能会被配置为在“边缘”上强制进行身份验证,服务请求具有正确的身份验证时缓存中的响应。查看其文档以获取详细信息。