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_headersnã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.
