我有一个在 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/