http - 为 REST 请求禁用来自 Jetty 服务器的客户端缓存

标签 http rest caching jetty jersey

我有一个在 Jetty 上运行的 Jersey 实现的 REST Java 服务器。似乎某些浏览器(IE7)在内部缓存了对服务器发出的所有请求。

我想做的是在来自 REST 服务器的响应中发送一个特定的 HTTP header ,指示浏览器它不应该缓存该响应,因此在下次需要访问该响应时将再次查询服务器资源。

关于如何为此配置 Jersey/Jetty 有什么想法吗? 或者配置它的唯一方法是客户端?

最佳答案

response.setHeader("Pragma", "no-cache");

不,不,不!

使用 pragma header 来禁用客户端缓存是错误的,它是一个请求 header ,对响应的影响

http://www.mnot.net/cache_docs/#PRAGMA

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32

此外,设置 Expires: 0 是不正确的,Expires 应该是一个日期,而不是秒数,但是这作为无效的 http 日期被解释为“已经过期”

http://www.mnot.net/cache_docs/#EXPIRES

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21

关于http - 为 REST 请求禁用来自 Jetty 服务器的客户端缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/127684/

相关文章:

android - java.io.IOException : BufferedInputStream is closed in Android 2. 3

c++ - HTTP 流 : what realizations of Push Technology are available?

javascript - 在页面上渲染时,如何从 JavaScript 中的 HTTP 响应中删除大括号?

python - 如何从 Flask 中的 HTTP 删除访问正文?

http - 如何检查所有 “Not Secure” 页面?

javascript - 使用 ajax 向 Node.js 服务器发送 POST 请求

rest - SPA - 基于服务器端验证的操作确认

wordpress - Varnish 未启动语法错误

laravel - 文件 css/all.css 未在 Assets list 中定义

spring - Redis 缓存在与 java 集成时是否返回区分大小写的数据?