Módulo de Cabeçalho do Apache Carregado, mas não pode definir cabeçalhos no htaccess

5

Eu tenho a configuração do Apache 2.2.29 (unix) e estou executando na minha nova máquina dev (mac). Eu estou tentando definir cabeçalhos de CORS para um projeto de API - algo que tenho feito muitas vezes.

O arquivo htaccess para o projeto é assim:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, PATCH, DELETE" 
    Header set Access-Control-Allow-Headers "X-Accept-Charset,X-Accept,Content-Type"
    ServerSignature Off
</IfModule>
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /cms/public
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
    RewriteRule (.+) index.php?p=$1 [QSA,L]
</IfModule>

e o módulo de cabeçalhos é carregado no meu conf:

LoadModule headers_module libexec/mod_headers.so

O arquivo do módulo existe no local mostrado no conf do apache e está carregado OK:

dan$ httpd -M

Loaded Modules:
 core_module (static)
 mpm_event_module (static)
 http_module (static)
 so_module (static)
 authn_file_module (shared)
 authn_dbm_module (shared)
 authn_anon_module (shared)
 ...
 headers_module (shared)

Eu também verifiquei as configurações de conf conf no meu conf principal e no conf vhosts incluído:

<Directory "/Users/dan/Sites">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Allow from all
    </IfModule>
</Directory>

No entanto, os cabeçalhos não estão sendo definidos conforme o esperado. Heres os cabeçalhos de resposta ao fazer uma solicitação para um projeto da API usando o arquivo htaccess acima:

HTTP/1.1 200 OK
Date: Wed, 22 Jul 2015 10:36:05 GMT
Server: Apache/2.2.29 (Unix) DAV/2 mod_fastcgi/2.4.6 mod_ssl/2.2.29 OpenSSL/1.0.2c
Expires: Wed, 15 Jul 2015 10:36:05 GMT
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8

Eu testei a configuração do aplicativo em outros ambientes do Apache e está funcionando como esperado ... por isso é definitivamente algo a ver com a minha configuração. Está me deixando louca!

Alguma ideia? Dan

    
por Dan Lake 22.07.2015 / 13:04

2 respostas

0

Se você ainda estiver interessado em resolver o problema, tenho algumas sugestões. A idéia básica da configuração é boa, eu testei em uma configuração simples e os cabeçalhos foram configurados corretamente.

Isso significa que o problema provavelmente está relacionado ao arquivo htaccess e à capacidade dos servidores de usá-lo. Eu tentaria primeiro colocar "lixo" no arquivo htaccess (qualquer coisa que não seja uma configuração válida do Apache). Se o arquivo htaccess estiver sendo lido corretamente, todas as solicitações que fazem com que o arquivo seja lido gerarão 500 Internal Server Error .

Em seguida, execute apachectl -S e verifique a saída, coloque-a na sua pergunta se não tiver certeza. Você precisa se certificar de que a solicitação seja mapeada para o bloco <Directory> em sua pergunta. Eu tenho medo de que você possa fazer pouco além de pesquisar em seus arquivos de configuração. Enquanto você faz isso, certifique-se de que AllowOverride não seja substituído em algum lugar.

Além disso, você está usando mod_fastcgi, portanto, dependendo da sua configuração, a solicitação pode não estar sendo mapeada para um diretório no sistema de arquivos, o que é necessário para que o arquivo htaccess seja lido.

    
por 27.09.2016 / 09:30
0

Para todos que ainda têm esse problema: para mim ajudou a mudar allowOverride None to allowOverride All no arquivo httpd.conf

    
por 01.10.2018 / 17:30