IE9 bloque le téléchargement d'une police web d'origine croisée
ça me rend dingue.
vient de tester un site sur IE9 et a découvert que la version 'live' rend une police web que j'utilise plus petite que sur la version dev.
Voici une sélection de captures d'écran:
j'utilise le kit Font Squirrel @font-face. Comme vous pouvez le voir, il est très bien sur Firefox, Chrome et même IE9 lors de la visualisation d'une version locale du site.
la seule différence entre les versions locale et live est que la police est chargée à partir d'un domaine différent sur le site live (j'ai mis en place la Politique cross-domain correctement, comme illustré par le fait qu'il fonctionne sur Firefox et Chrome).
Je ne me souviens pas à quoi il ressemblait dans IE8 (Microsoft, encore une fois, n'ont pas pensé de développeurs et ont installé IE9 sur le dessus de IE8 sans option de les exécuter simultanément)
le site est à http://enplanner.com pour que vous puissiez voir la source.
toute aide sur ce serait très apprécié - merci à l'avance.
Edit: j'ai enlevé IE9 et découvert que c'est ressemble exactement la même sur les deux locale et de vivre dans IE8. Il semble que IE8 ait un moteur de rendu supérieur qui est plus proche de FF/Chrome que IE9. C'est assez déprimant de découverte.
13 réponses
IE9 prend en charge .WOFF; IE8 ne fait pas, et soutient seulement .EOT fonts.
ouvrez les outils de développement IE9 F12 et vous voyez les messages suivants:
CSS3117: @font-face failed cross-origin request. Resource access is restricted.
Neuton-webfont.woff
CSS3117: @font-face failed cross-origin request. Resource access is restricted.
YanoneKaffeesatz-Regular-webfont.woff
CSS3114: @font-face failed OpenType embedding permission check. Permission must be Installable.
Neuton-webfont.ttf
CSS3114: @font-face failed OpenType embedding permission check. Permission must be Installable.
YanoneKaffeesatz-Regular-webfont.ttf
en examinant vos en-têtes HTTP, il est clair que votre accès cross-domain n'est pas configuré correctement, car il n'y a pas d'en-tête de réponse Access-Control-Allow-Origin
sur vos fichiers WOFF. Ils sont également livrés avec le mauvais type MIME ( text/plain
) bien que cela ne cause pas votre problème. Cependant, l'échec de la mise en correspondance de woff
avec le type MIME correct peut causer des problèmes car certains serveurs ne serviront pas les fichiers avec des extensions "non définies" et retourneront plutôt une erreur HTTP/404
.
OK, voilà ce qui a marché. Placez la section suivante dans votre configuration Apache pour l'hôte à partir duquel vous servez les polices:
<FilesMatch "\.(ttf|otf|eot|woff)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "http://mydomain.com"
</IfModule>
</FilesMatch>
remplacer "mydomain.com' avec votre propre domaine ou *
(mais faites attention en utilisant *
car cela signifie que n'importe qui peut utiliser votre CDN)
le '/ woff ' était ce que j'avais oublié. Doh!
pour IIS ajouter les lignes ci-dessous....fonctionne comme un charme
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
en ce qui concerne la réponse de meanstreakuk ci-dessus, je voudrais compléter. Nous avons eu le même problème et nous avons cherché ce que fait Google Web Font. Donc, nous avons mis dans notre htaccess, ce:
Header set Access-Control-Allow-Origin " * "au lieu de notre domaine. Si l'asterisc, comme Google le fait, il fonctionne tout le temps.
vérifiez si vous pouvez ouvrir dans IE le fichier (your-web.com/your-font.woff), si vous recevez l'erreur 404 aller à IIS, double-cliquez l'option de configuration " MIME Types "tout en ayant IIS noeud racine sélectionné dans le panneau gauche et cliquez sur" Ajouter..."lien dans le panneau des Actions à droite. Cela va faire apparaître le dialogue suivant. Ajouter. woff extension de fichier et spécifier " application/x-font-woff " comme type MIME correspondant.
I utilisez ces instructions dans ce site ( Robòtica educativa ), Je convertiserai mon original .police ttf ( http://www.font2web.com/ )
j'ai trouvé une solution. Ajouté ceci à htaccess.
BrowserMatch MSIE best-standards-support
Header set X-UA-Compatible IE=8 env=best-standards-support
une solution alternative à l'utilisation de l'en-tête Access-Control-Allow-Origin est d'intégrer la police dans votre CSS en utilisant data:.
il est également intéressant de noter que si vos actifs sont hébergés sur Amazon AWS S3 que vous ne serez pas en mesure de définir les en-têtes que le serveur envoie. Au lieu de cela, vous aurez besoin de configurer les paramètres de CORS sur votre seau, selon ces instructions:
N'oubliez pas d'inclure .svg -- cela peut être nécessaire dans certains cas. L'ajout a résolu le problème dans IE 11
<FilesMatch "\.(eot|otf|svg|woff|ttf)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
à mettre en œuvre en ASP.Net vous pouvez utiliser cette syntaxe
Response.AppendHeader("Access-Control-Allow-Origin", "*");
j'ai tout essayé depuis la modification de ma config apache, et .fichiers htaccess sans succès. Dans les outils de développement D'IE, je suis tombé sur "Document Mode" et la valeur par défaut était IE7. Donc, après quelques recherches, j'ai trouvé cette balise meta:
<meta http-equiv="X-UA-Compatible" content="IE=9">
maintenant IE 10, et 9 formater mon site web correctement et afficher toutes les icônes de police impressionnant correctement.
Espère que ça aide...
NON TESTÉ!
NGINX site bit de fichier pour permettre juste l'accès d'origine aux fichiers de police si votre CDN n'est pas public: -) Happy coding
location ~ \.(ttf|otf|eot|woff)$ {
Access-Control-Allow-Origin: *
}
après avoir remarqué cette erreur dans la console (F12): @font-face failed cross-origin request. Resource access is restricted
j'ai découvert que mon navigateur (IE11, émulation: IE9) " contenu bloqué pour aider à protéger ma vie privée ". En débloquant le contenu-cliquez sur le signe à côté de l'url - il a fonctionné comme il devrait.