我目前正在构建 REST API。无论谁在访问资源,我创建的许多资源始终是相同的。少数没有的将具有 Vary: Authorization
header 。
有两个异常(exception):
- 如果您未通过身份验证,您将收到 401 响应。
- 对于某些您无权访问的资源,您可能会收到 403 响应。
我的问题是,在这种情况下是否仍然可以正确设置缓存。特别是,我想使用反向代理(例如 nginx、varnish 或 haproxy)来卸载主服务。
这个问题有优雅的解决方案吗?
最佳答案
变化:授权
是不必要的;对具有授权的请求的响应自动是私有(private)的,并且不会被共享缓存缓存。
您可以发送Cache-Control: public
来覆盖它;可以使用正常规则缓存响应。
但是,如果您希望这些响应保持经过身份验证,则需要强制进行身份验证。您还可以通过发送Cache-Control: no-cache
来做到这一点,这将强制缓存在提供存储的响应之前检查源。
如果您只是想让反向代理(例如 Varnish、nginx)进行缓存,则很可能它有一种配置方式可以在“边缘”上实现身份验证,从而提供服务当请求经过正确的身份验证时,缓存中的响应。查看其文档以了解详细信息。
关于rest - 经过身份验证的 REST api 的 HTTP 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40159967/