Como corrigir o erro de CORS de fontes no Elementor
O que é o erro de CORS de fontes no Elementor?
O navegador trata fontes carregadas via @font-face com regras de origem cruzada (CORS): se a URL da fonte aponta para um host diferente do site, o servidor da fonte precisa responder com o cabeçalho Access-Control-Allow-Origin liberando a origem do site. Sem esse cabeçalho, o navegador baixa o arquivo mas se recusa a aplica-lo, e o texto renderiza com a fonte de fallback do sistema. No Elementor isso aparece quando as Fontes Personalizadas (Elementor Pro) ou o Google Fonts em modo de auto-hospedagem ficam num CDN ou subdominio estático separado do domínio principal: o arquivo woff2 esta la, retorna 200, mas vem sem o cabeçalho de CORS, entao a tipografia configurada no editor simplesmente não aparece no frontend.
Como identificar
- O console do navegador mostra a mensagem ‘Access to font at … has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource’.
- O texto do site abre numa fonte generica (Arial ou Times) em vez da fonte escolhida no Elementor, mesmo a fonte aparecendo certa dentro do editor.
- Na aba Network do navegador, o arquivo woff2 ou woff retorna status 200, porém sem o cabeçalho Access-Control-Allow-Origin na resposta.
- O problema some ao desativar o CDN ou ao acessar o site pelo domínio de origem, e volta quando os assets são servidos pelo domínio do CDN.
Como prevenir
- Sirva as fontes do mesmo domínio do site sempre que possível, para o navegador nem aplicar regras de origem cruzada
- Ao configurar um CDN, inclua as extensões woff2, woff e ttf nas regras que repassam o cabeçalho Access-Control-Allow-Origin
- Depois de cada troca de domínio ou de http para https, revise o valor do Access-Control-Allow-Origin para que ele bata com a origem real do site
Causa
- Arquivo de fonte (woff2, woff, ttf) servido por um CDN ou subdominio estático cujo domínio difere da origem do site, sem o cabeçalho Access-Control-Allow-Origin liberando essa origem.
- Fontes Personalizadas do Elementor Pro hospedadas em wp-content/uploads e reescritas para um host de CDN que não propaga o cabeçalho de CORS para tipos de fonte.
- Google Fonts em modo de auto-hospedagem (Improve Google Fonts Loading) gravados em uploads/elementor/google-fonts e entregues por um proxy de cache em domínio diferente sem CORS.
- Regra de servidor (Apache mod_headers ou bloco de location do Nginx) que aplica Access-Control-Allow-Origin apenas a imagens e ignora as extensões woff2, woff e ttf.
- Cabeçalho Access-Control-Allow-Origin fixado em um valor de origem antigo (http em vez de https, ou domínio sem www) que não bate com a origem real do navegador.
Como resolver
- Confirme a origem da fonte bloqueada: abra o site, pressione F12, va na aba Console e leia a mensagem de CORS: ela mostra a URL exata da fonte e a origem que foi bloqueada. Anote o host que serve a fonte (CDN ou subdominio) para liberar so ele.
- Libere o cabeçalho de CORS para fontes no Apache: se o servidor usa Apache, edite o .htaccess da raiz do WordPress e adicione, acima do bloco BEGIN WordPress, a regra que envia Access-Control-Allow-Origin com o domínio do seu site para as extensões de fonte. O bloco completo, pronto para colar, esta na seção de código desta página. Os caminhos abaixo localizam o arquivo a editar.
.htaccess wp-content/uploads/elementor - Ou libere no Nginx: se o servidor usa Nginx, edite a configuração do site e adicione, no bloco server, um location para as extensões de fonte com a diretiva add_header Access-Control-Allow-Origin apontando para o domínio do seu site mais a diretiva Vary Origin. Depois teste a sintaxe e recarregue o serviço com os comandos abaixo.
nginx -t systemctl reload nginx - Ajuste o CDN para repassar o cabeçalho: se as fontes passam por um CDN, ative no painel do CDN a opção que respeita ou repassa o cabeçalho de origem (forward Access-Control-Allow-Origin) e limpe o cache do CDN, senao ele continua servindo a versão antiga sem CORS.
- Hospede as fontes no mesmo domínio: como alternativa definitiva, sirva as fontes da mesma origem do site. No Elementor, ative a auto-hospedagem do Google Fonts e exclua a pasta de fontes da reescrita de URL do CDN, para que o navegador busque a fonte na origem e nem aplique CORS.
wp-content/uploads/elementor/css wp-content/uploads/elementor/google-fonts
# Cabecalho de CORS so para arquivos de fonte (Apache)
# Cole no topo do .htaccess da raiz do WordPress, antes do bloco # BEGIN WordPress.
<IfModule mod_headers.c>
<FilesMatch ".(woff2?|ttf|otf|eot|svg)$">
Header set Access-Control-Allow-Origin "https://seusite.com.br"
Header set Access-Control-Allow-Methods "GET"
Header set Vary "Origin"
</FilesMatch>
</IfModule>














