Os cabeçalhos personalizados não passam pelo Dispatcher ou afetam o comportamento do armazenamento em cache

Os cabeçalhos de resposta personalizados, como X-Robots-Tag, ETag e cabeçalhos de cache personalizados desaparecem quando uma página é veiculada pela Dispatcher, ou interrompem o cache CDN quando uma diretiva Vary: User-Agent herdada está presente. O Dispatcher encaminha apenas cabeçalhos de resposta explicitamente listados em sua configuração /cache/headers e /headers, e o Apache substitui alguns cabeçalhos (como ETag), a menos que seja instruído a adiar para o AEM. Permitir o cabeçalho na configuração do farm, garantir que o Apache o encaminhe sem modificações, remover a diretiva Vary: User-Agent herdada e limpar o cache restaurará a passagem e o cache corretos do cabeçalho.

Descrição description

Ambientes:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services (AMS)
  • Software local Adobe Experience Manager
  • AEM Dispatcher (Apache) e a camada CDN

Problema/sintomas:

  • Um cabeçalho está visível na Publicação do AEM com curl -I, mas está ausente na Dispatcher.
  • O CDN não armazena páginas em cache por causa de Vary: User-Agent.
  • Os cabeçalhos personalizados aparecem somente quando um parâmetro de consulta (?a=b) é adicionado, pois o Dispatcher ignora o cache.
  • O ETag foi perdido ou modificado, como o Apache -gzip.
  • O Dispatcher retorna conteúdo desatualizado porque os cabeçalhos em cache não são atualizados.

Causa raiz:

O Dispatcher encaminha apenas cabeçalhos de resposta explicitamente listados em /cache/headers e /headers. Quando um cabeçalho não está presente, o Dispatcher o desmonta ou usa metadados de cabeçalho em cache. O Apache substitui cabeçalhos (como ETag) a menos que seja configurado para adiar para o AEM. Algumas configurações herdadas do vhost incluem Header append Vary User-Agent, que interrompe o cache da CDN devido à cardinalidade excessiva de variação. As solicitações de sequência de consulta ignoram o cache, o que faz com que os cabeçalhos ausentes apareçam apenas em caminhos em cache.

Como confirmar

  1. Determine se o cabeçalho está ausente antes ou depois da Dispatcher. Execute curl -I com base nas URLs de Publicação e Dispatcher e compare os conjuntos de cabeçalhos. Se o cabeçalho for exibido em Publicar, mas estiver ausente ou modificado no Dispatcher, o Dispatcher ou o Apache o removerá. Se já estiver faltando em Publicar, corrija o código do AEM primeiro.
  2. Verifique se o cache do Dispatcher está envolvido. Teste novamente com um parâmetro de consulta (curl -I em relação a uma URL com ?a=b). Se o cabeçalho for exibido somente com o parâmetro de consulta, o recurso estará sendo veiculado a partir do cache, sem metadados de cabeçalho armazenados.

Resolução resolution

Siga estas etapas para resolver o problema:

  1. Permitir o cabeçalho para armazenamento em cache no arquivo farm. No arquivo do farm de publicação .any, adicione o nome do cabeçalho ao bloco /cache/headers (Por exemplo: X-Robots-Tag, ETag ou Edge-Cache-Tag). Depois de reiniciar e limpar o cache, execute curl -I e confirme se o cabeçalho aparece.

  2. Certifique-se de que o Apache encaminhe o cabeçalho sem substituí-lo. Para AMS e local, edite o vhost:

    • Para ETag, adicione FileETag None e Header unset ETag.
    • Para um cabeçalho personalizado, defina SetEnvIfNoCase X-Robots-Tag "(.+)$" X_ROBOTS_TAG=$1 e Header always set X-Robots-Tag "%{X-Robots-Tag}e" env=X_ROBOTS_TAG.

Execute apachectl -t, reinicie o serviço e confirme se curl -I mostra o cabeçalho.
​3. Permitir o cabeçalho para encaminhamento (não armazenamento em cache) no arquivo farm. Adicione o cabeçalho ao bloco /headers para que o Dispatcher o encaminhe para o cliente mesmo quando a resposta não estiver armazenada em cache, depois confirme com curl -I.
​4. Remova a diretiva Vary: User-Agent herdada. Pesquise os diretórios vhost com grep -R "Vary User-Agent" . e comente todas as instâncias encontradas, para que o CDN retome as respostas de armazenamento em cache.
​5. Limpe o cache após as alterações de configuração. No AEMaaCS, use Cloud Manager → Ambiente → Limpar cache. No AMS ou no local, remova os arquivos em cache em <dispatcher_cache_path> ou acione uma liberação de ativação e reinicie o Apache. Confirmar se curl -I mostra o cabeçalho correto.
​6. Valide o mapeamento de domínio para farm. Confirme se o vhost inclui o domínio solicitado para que o Dispatcher use o farm de publicação correto com as regras de cabeçalho. Verifique os logs do Dispatcher para Nenhum farm corresponde ao host; se ele aparecer, adicione o domínio ao vhost ServerName ou ServerAlias e tente novamente.

Validação

  1. Execute curl -I com base na URL do Dispatcher e confirme se o cabeçalho está presente e corresponde a Publicar.
  2. Confirme se o arquivo de metadados em cache (<path>.headers) foi criado no diretório de cache do Dispatcher.
  3. Confirme se nenhum cabeçalho não intencional (como Vary: User-Agent) permanece no vhosts e verifique a taxa de acertos do cache do CDN antes e depois da alteração.

Leitura relacionada

recommendation-more-help
experience-cloud-kcs-help-kbarticles