Desativar mod_cache se o cabeçalho de autorização estiver presente

1

Meu site exibe as mesmas páginas para usuários conectados e desconectados. Solicitações de usuários conectados têm um cabeçalho de autorização. Eu quero usar o mod_cache do Apache para servir páginas em cache apenas para usuários desconectados.

Começando com um novo servidor, posso fazer solicitações com o cabeçalho de autorização e elas não serão armazenadas em cache. Se eu fizer uma solicitação como um usuário desconectado, a solicitação será armazenada em cache. O problema é que as solicitações subsequentes com o cabeçalho Authorization retornam o resultado em cache.

Como posso desativar o mod_cache para solicitações com o cabeçalho Authorization?

edit: enquanto eu escrevia isso, encontrei uma solução que parece funcionar.

RequestHeader set Cache-Control max-age=300 "expr=-z %{HTTP:Authorization}"

Isso define um cabeçalho de controle de cache em cada solicitação que não tenha o cabeçalho de autorização. Curiosamente, as respostas para pedidos autenticados agora contêm o cabeçalho "Vary: Authorization".

Esta é uma boa solução? Devo apenas usar o verniz em vez de mod_cache?

Obrigado

    
por moolagain 20.11.2017 / 09:10

1 resposta

0

A questão de se você deve usar verniz deve considerar um grande número de variáveis sobre as quais você não nos disse nada. O que você implementou é o mais próximo do requisito que você descreve como qualquer coisa em que eu possa pensar. Embora eu queira validar o mod_cache / verniz está honrando o cabeçalho "Vary" corretamente.

No entanto, os predicados em sua exigência são bastante estranhos. Suspeito que, se pretender alterá-las no futuro, poderá encontrar problemas - por exemplo, mudar para um mecanismo de autenticação diferente.

    
por 20.11.2017 / 13:51