Apache 2.4: Cabeçalho não definido no Local não funciona

3

Estamos executando o apache 2.4 para servir nossos sites gerados por typo3.

Em geral, queremos ter o X-Frame-Options SAMEORIGIN Cabeçalho presente para todas as solicitações.

Com uma exceção. Para um URL específico, este cabeçalho deve estar indefinido, já que ele deve ser usado dentro de um iFrame de outro domínio.

Então, adicionei algo assim:

Header always set X-Frame-Options SAMEORIGIN

<Location /anotherURL>
    Header always unset X-Frame-Options
</Location>'

Quando tento solicitar o URL fornecido https://www.example.com/ , vejo o X-Frame-Options -Header na resposta, mas com https://www.example.com/anotherURL esse cabeçalho ainda está presente.

Eu verifiquei se a diretiva Location está realmente processada adicionando um Require all denied à diretiva Location. Com este ativo, o acesso ao URL /anotherURL é negado, como esperado.

Se eu alterar o local de /anotherURL para /typo3 , o não configurado funciona conforme o esperado.

A única diferença que vejo entre esses dois URLs é que /typo3 existe na estrutura de diretórios em htdocs pois/anotherURL é uma URL processada por Typo3.

Minha pergunta agora é: por que o Apache ignora meu comando Header unset? Do ponto de vista do Apaches, ele deve ignorar o que o Typo3 está fazendo, uma vez que ele gera o cabeçalho de resposta que a Diretriz de Localização deve igualar (o que obviamente está fazendo) e o processo dos comandos internos.

Eu consultei algumas das outras questões relacionadas a problemas com a desativação de cabeçalhos HTTP, mas nenhuma sugestão resolveu meu problema específico.

    
por Tobias Wolf 29.07.2016 / 16:00

2 respostas

2

Aqui estão minhas ideias para isso:

O principal problema, por que minhas declarações de cabeçalho não são executadas dentro da Diretiva Location, está no mod_rewrite.

Quando uma solicitação com uma URL virtual como /anotherURL , para a qual não existe nenhuma entidade física, entrar, o mod_rewrite começa imediatamente a aplicar suas regras. Aqui ele mapeia para /index.php e envia as informações /anotherURL para os parâmetros GET, que são usados posteriormente para identificar a página do Typo3.

Isso explica por que as declarações de cabeçalho não são executadas, o local da solicitação foi alterado.

Agora, para a solução, que funciona para mim. Como não posso confiar na URL, tenho que encontrar outra informação. Para mim, o Referer me serve bem:

SetEnvIf Referer ^https:\/\/www.(location1|location2).de\/test\.html$ IFRAME_ENV Header always set X-Frame-Options "sameorigin" env=!IFRAME_ENV

Vai fazer o truque.

Agora, para cada solicitação, o referenciador é verificado. Por padrão, o cabeçalho X-Frame-Otions é adicionado, exceto quando o referenciador é configurado para as duas URLs, a partir das quais eu quero permitir a incorporação do iFrame.

Se alguém souber como aplicar diretivas de localização antes de o mod_rewrite entrar em ação, estou muito aberto a essa solução :) Até quando isso parecer funcionar para mim.

Obrigado a todos pelo apoio.

    
por 04.08.2016 / 16:05
0

Tente isto:

<Location /anotherURL>
    Header always unset X-Frame-Options
    Header unset X-Frame-Options
</Location>

A mesma coisa com o backend do Jboss não desativava um cabeçalho e, acima disso, corrigia-o. Não lembro mais por que agora (algo a ver com a ordem de processamento ao incluir always keyword).

    
por 29.07.2016 / 21:09