Pergunta

Eu tenho o seguinte retornado de um método de camisa @get. Funciona, bem, mas sempre inclui o cabeçalho sem cache. Eu gostaria de permitir que o cliente cache esses dados, pois raramente muda.

ResponseBuilder rb = Response.ok(c);
    CacheControl cc = new CacheControl();
    cc.setMaxAge(60);
    cc.setNoCache(false);
    return rb.cacheControl(cc).build();

A resposta é sempre:

 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

Que estou fazendo errado aqui?

Foi útil?

Solução

Isso foi causado por uma autenticação básica ligada.

Especificar isso no contexto corrigirá o problema:

<Valve className="org.apache.catalina.authenticator.BasicAuthenticator"
       disableProxyCaching="false" />

Espero que isso ajude outra pessoa a sair.

Outras dicas

Seu código parece bem.

Qual contêiner você está usando? Verifique se o cache não está desativado nele. Verifique também os manipuladores de resposta a jusante ou os filtros não estão definindo a diretiva sem cache.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top