我从Jersey @GET方法返回以下内容。它工作正常,但总是包含No-cache标头。我想允许客户端缓存这些数据,因为它几乎没有变化。
ResponseBuilder rb = Response.ok(c);
CacheControl cc = new CacheControl();
cc.setMaxAge(60);
cc.setNoCache(false);
return rb.cacheControl(cc).build();
响应总是:
Server Apache-Coyote/1.1
Pragma No-cache
Cache-Control no-cache, no-transform, max-age=60
Expires Wed, 31 Dec 1969 19:00:00 EST
Content-Type application/xml
Content-Length 291
Date Tue, 16 Feb 2010 01:54:02 GMT
我在这里做错了吗?
答案 0 :(得分:5)
这是由于打开了BASIC身份验证造成的。
在上下文中指定此项将更正此问题:
<Valve className="org.apache.catalina.authenticator.BasicAuthenticator"
disableProxyCaching="false" />
希望这有助于其他人。
答案 1 :(得分:0)
您的代码看起来没问题。
您使用的是哪个容器?确保未禁用缓存。还要验证下游响应处理程序或过滤器没有设置no-cache指令。