Se você tentou liberar o CORS com:
Header set Access-Control-Allow-Origin "*"
e recebeu um erro 500 Internal Server Error, esta é a explicação técnica e como resolver.
Causa do erro
O Apache retorna erro 500 quando:
- O módulo
mod_headers
não está ativado. - A diretiva
Header
é usada em um contexto onde não é permitida (como<Directory>
sem configuração adequada).
Correção
1. Ativar o módulo mod_headers
Execute:
a2enmod headers
systemctl restart apache2
2. Usar a diretiva Header
no local apropriado
Locais permitidos para Header set
:
- Dentro de
.htaccess
- Dentro de
<VirtualHost>
- Dentro de
<Location>
- Dentro de
<Files>
Evite usar diretamente dentro de <Directory>
a menos que esteja com AllowOverride
adequado.
Exemplo correto dentro de um VirtualHost:
<VirtualHost *:80>
ServerName exemplo.com
DocumentRoot /var/www/html
Header set Access-Control-Allow-Origin "*"
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Exemplo usando .htaccess
:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
3. Garantir que AllowOverride
está habilitado (caso use .htaccess
)
<Directory /var/www/html>
AllowOverride All
</Directory>
4. Reiniciar o Apache
systemctl restart apache2
Como investigar o erro 500
Para descobrir a causa exata:
tail -f /var/log/apache2/error.log
O log de erro geralmente entrega a razão precisa da falha.