http - 即使禁用缓存,Safari 也会缓存 GET 请求

标签 http caching safari

我已将据我所知的所有 header 设置为在我的服务器上禁用缓存(甚至禁用 ETAG),但 Safari 仍然偶尔(大约 50% 次)缓存我的请求。

工作流程

我正在实现 oauth 1,所以:

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

  2. 服务器返回 405

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

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

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

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

来自 Safari Network Inspector 的请求摘要

摘要

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

状态: 405 方法不允许

来源: 磁盘缓存

请求

无请求,从磁盘缓存提供服务。

响应

传输编码: 身份

内容类型: application/json;字符集=utf-8

编译指示: 无缓存

缓存控制: 私有(private)、无缓存、无存储、必须重新验证、max-age=0

变化: Cookie,接受编码

日期: 2019 年 1 月 23 日星期三 11:34:23 GMT

内容编码: gzip

过期时间: 1994 年 12 月 1 日星期四 16:00:00 GMT

连接: 关闭

x-powered-by: Express

结论

我不知道出了什么问题,我将非常感谢任何帮助。我的 Safari 版本为 12.0.2。我无法使用 Chrome 重现此问题。

最佳答案

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

这个答案帮助了我:https://stackoverflow.com/a/2068353/1364158

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

关于http - 即使禁用缓存,Safari 也会缓存 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54326697/

相关文章:

php - 我可以在 WP Super Cache 缓存的 WP 页面中包含动态内容吗?

android - 如何限制用户从 Android 设备的文件资源管理器中查看/访问缓存的文件?

python - 使用一些偏移量从服务器读取文件

Apache 不提供 H2

http - 是否可以将空格字符传递给 cgi?

Ios 应用程序缓存 Webview 和 native 调用

javascript - Safari 上的 JSONP 错误

iphone - 页脚宽度设置为 100%,绝对位置不会延伸到移动浏览器中浏览器窗口的右边缘

html - 在 Chrome 和 Firefox 中正确呈现,但在 Safari 或 IE 中不正确

java - POST请求变成GET