Safari缓存GET请求(即使禁用了缓存)

时间:2019-01-23 11:53:59

标签: http caching safari

我已经设置了我知道的所有标头,以在服务器上禁用缓存(甚至禁用ETAG),但是Safari仍然偶尔(约50%次)缓存我的请求。

工作流程

我正在实现oauth 1,所以:

  1. 浏览器发出GET /api/user请求

  2. 服务器返回405

  3. 浏览器重定向到第三方网站进行身份验证

  4. 浏览器被重定向到api/callback,后者将一些信息存储到cookie中。

  5. 浏览器被重定向回原始路由。

  6. 浏览器发出GET /api/user请求,该请求应该成功,但是它会从磁盘缓存中获取405服务。

来自Safari网络检查器的请求摘要

摘要

URL: http://localhost:3000/api/user

状态: 405 Method Not Allowed

来源: Disk Cache

请求

没有请求,由磁盘缓存提供。

响应

传输编码: Identity

内容类型: application/json; charset=utf-8

编译指示: no-cache

缓存控制: private, no-cache, no-store, must-revalidate, max-age=0

不同: Cookie, Accept-Encoding

日期: Wed, 23 Jan 2019 11:34:23 GMT

内容编码: gzip

有效期: Thu, 01 Dec 1994 16:00:00 GMT

连接: close

x-by-by: Express

结论

我不知道怎么了,我将不胜感激。我的 Safari版本为12.0.2。我无法使用Chrome复制此问题。

1 个答案:

答案 0 :(得分:1)

使用Vary: *。这神奇地解决了我的问题。

此答案对我有帮助:https://stackoverflow.com/a/2068353/1364158

或者,您可以通过在网址中包含一些无意义的随机查询arg来强制浏览器加载新版本的请求,例如/api/user?ts=18284