Fonte bloqueada de carregamento pela diretiva de compartilhamento de recursos de origem cruzada: Não 'Access-Control-Allow-Origin'

16

estamos com esse erro no Google Chrome. Achamos que tudo estava configurado corretamente. Mas talvez não?

A fonte da origem http://skin.cdn.comfoi impedida de carregar pela política de Compartilhamento de Recursos entre Origens: Nenhum cabeçalho 'Acesso-Controle-Permitir-Origem' está presente no recurso solicitado. http://domain2.comPortanto, a origem não é permitida.

E temos o seguinte no htaccess (na raiz do domínio).

<IfModule mod_headers.c>    
Header add Access-Control-Allow-Origin "http://skin.cdn.com" 
</IfModule>

Pergunta: esqueci outras configurações?

Muito Obrigado

snh_nl
fonte

Respostas:

17

Altere o código do arquivo htaccess no diretório raiz do site (ou seja, o arquivo public_html ".htaccess")

<FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "http://skin.cdn.com"
    </IfModule>
</FilesMatch>

Agora sua CDN poderá carregar seu recurso, chamando-o como um recurso de passagem seu (as fontes).

CAVEAT: É necessário PURGAR TUDO na sua CDN para que os arquivos sejam atualizados em alguns minutos.

Prashant Tapase
fonte
11
Sua resposta funcionou perfeitamente para mim, mas posso perguntar por que você escolheu o curinga em vez de limitá-lo a origens específicas?
amgraham
Este método ainda está funcionando.
Rahul
0

Não tenho reputação suficiente para comentar a resposta de @Prashant Tapase, mas seu diretório raiz não é seu Public_html. Este é um subdiretório do seu diretório raiz. e pelas respostas que tenho pesquisado A diretiva FileMatch deve estar dentro do IfModule Como mostrado abaixo

<IfModule mod_headers.c>
    <FilesMatch "\.(eot|otf|ttc|ttf|woff|woff2)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

Por favor, corrija-me se isso estiver errado.
Ou você pode especificar URLs / URIs específicos de fontes como ele mencionou.

Além disso, se for uma CDN, você deve usar a versão https, e não http, se possível.

Ryan Stone
fonte