2012-06-21 8 views
11

EDIT 23-06-2012 10:24 (CET): encontró la respuesta@ font-face no se puede cargar a través de https en IE

Tome un vistazo a la respuesta de fondo. Eso es lo que me solucionó el problema. IE9 está renderizando de la manera correcta ahora. IE8 tiene una fuente levemente diferente. No estoy seguro de qué fuente, pero parece "OK".

Original Question:

He estado luchando con esto durante varias horas. Para uno de nuestros clientes, hemos diseñado una tienda en línea y hemos estado desarrollando esto a través de una conexión http no segura normale. Desde hace 2 días, hemos instalado un certificado SSL en el dominio y forzado cada conexión con el sitio web para pasar por el dominio https usando .htaccess

Pero, por alguna razón, IE (sin versión) representa la fuente que 've especificado en el CSS usando @ Font-Face. Aquí está el de los códigos que utilizamos para las fuentes:

@font-face { 
    font-family: 'ProximaNovaLight'; 
    src: url('https://www.bijouterieyvette.com/font-face/proximanova-light-webfont.eot'); 
    src: url('https://www.bijouterieyvette.com/font-face/proximanova-light-webfont.eot?#iefix') format('embedded-opentype'), 
     url('https://www.bijouterieyvette.com/font-face/proximanova-light-webfont.woff') format('woff'), 
     url('https://www.bijouterieyvette.com/font-face/proximanova-light-webfont.ttf') format('truetype'), 
     url('https://www.bijouterieyvette.com/font-face/proximanova-light-webfont.svg#ProximaNovaLight') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

Como se puede ver que estoy usando el enlace completo a las fuentes, incluyendo el https. Intenté mover los archivos a la raíz del dominio para que coincida con el dominio de certificados SSL. También traté de usar rutas relativas desde el CSS, pero tampoco funcionó.

Todas las fuentes están en el dominio, ninguna de ellas tiene dominios cruzados.

Me encontré con otras 2 publicaciones aquí en SO describiendo problemas similares, uno de ellos no fue resuelto, el otro sí, pero no parecía ser el mismo. En este caso, el autor de la pregunta tuvo que agregar encabezados de Access-Control-Allow-Origin a las solicitudes de archivos de woff/ttf/otf/svg. También he añadido estas cabeceras a mi .htaccess sólo para estar seguro:

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

Soy una especie de quedarse sin opciones y thoughs. No soy servidor-configuración-tipo-de-persona, pero más en PHP/MySQL/jQuery, así que creo que mis pensamientos son bastante limitados en comparación con otros aquí en SO.

Si alguien tiene una opción que vale la pena probar, ¡házmelo saber!

UPDATE 22-06-2012:

Si cambio el https a http y actualiza la página en IE, estoy siendo aparezca el mensaje de que hay contenido no seguro y tengo la opción de aceptar este contenido. Si elijo 'SÍ', mi contenido se está cargando y ... ¡la fuente está disponible! Yay ... Sin embargo ... si lo cambio a https, las fuentes desaparecerán nuevamente.

No estoy seguro que puedo aprender de esto (lol), pero tal vez esto permite a cualquier persona una pequeña idea ..

UPDATE 22-06-2012 #2:

Hasta ahora he intentado:

url ('/ /protocol/relative/font.eot '); url ('../ file/relative/font.eot'); url ('/ domain/relative/font.eot'); url ('https: //www.secure.tld/font.eot'); url ('http: //www.normal.tld/font.eot'); (funciona pero con una ventana emergente que contiene elementos no seguros en IE)

También traté de crear una reescritura forzando el FilesMatch (woff, ttf, otf, eot, svg) a una conexión http: //. Funcionó como lo pensé y no tengo ni idea de si hizo algo ...

También he añadido esto:

AddType application/vnd.ms-fontobject .eot 
AddType font/truetype .ttf 
AddType font/opentype .otf 
AddType font/opentype .woff 
AddType image/svg+xml .svg .svgz 

a la carpeta que contiene las fuentes (en un archivo .htaccess ofcourse) aswell como en el archivo .htaccess principal.

Además de que traté de eliminar el inicio de sesión de htpasswd, era una suposición descabellada, pero tampoco cambió nada.

UPDATE 23-06-2012:

comprobado los registros del servidor DirectAdmin .. aparentemente IE está solicitando las fuentes (veo un archivo EOT con el signo de interrogación, que supongo que este es el EOT se solicitan con IEFix y woff). Todo lo que ha solicitado está también recibiendo una respuesta 200 OK cabecera, que no está haciendo las cosas más claras para mí ..

Todavía estás y la búsqueda de lo que podría causar este problema ..

Además, en base a la " Log de la consola F12 "-thingy en IE. Puedo ver claramente que las fuentes se están solicitando, además de https, con una respuesta de 200 OK. Lo extraño es que solo veo 3 de las 4 fuentes que estoy usando, pero es posible que el 4to no se esté usando en la página principal.

+1

no puedo pensar en nada concreto, pero ¿ha intentado URL sin un dominio, o [URL de protocolo relativos] (http://paulirish.com/2010/the-protocol-relative-url/)? – RoToRa

+0

Aún no hemos probado las URL relativas al protocolo, lo intentaremos. Las URL sin un dominio o relativo al CSS se prueban y no funcionan desafortunadamente –

+0

¿Puede averiguar si el archivo se está cargando, por ejemplo, con Fiddler? – RoToRa

Respuesta

2

Por lo tanto, acabo de descubrir una manera que funciona para IE, Safara, Firefox y Chrome por lo que puedo ver.

Como todas las cosas que probé no funcionaron, estaba tratando de encontrar una manera que pudiera "incrustar" las fuentes en mis sitios web, en mi CSS o en mi servidor. Agregué que la fuente de mi servidor no era una opción según mi servidor, así que decidí volver a Font-Squirrel y ver si había alguna opción para convertir las fuentes.

Recargué mis fuentes y elegí el modo de exportación. En algún lugar alrededor de la parte inferior de los campos de configuración dice "Base64 Encode", afortunadamente sabía lo que esto significaba (me puedo imaginar a alguien que no ve fácilmente esta opción) así que generé mis archivos CSS con fuentes base64.

Esto funciona sin problemas. Por supuesto, esto hizo que mis archivos CSS fueran más grandes (5kb frente a 129kb). Pero no veo una gran ventaja de 100kb extra con las conexiones a internet actuales.

CSS sólo para comparar, no base64:

@font-face { 
    font-family: 'ProximaNovaSemibolds'; 
    src: url('../font-face/proximanova-semibold-webfont.eot'); 
    src: url('../font-face/proximanova-semibold-webfont.eot?#iefix') format('embedded-opentype'), 
     url('../font-face/proximanova-semibold-webfont.woff') format('woff'), 
     url('../font-face/proximanova-semibold-webfont.ttf') format('truetype'), 
     url('../font-face/proximanova-semibold-webfont.svg#ProximaNovaSemibold') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

Base64 codificado CSS:

@font-face { 
    font-family: 'ProximaNovaBold'; 
    src: url('proximanova-bold-webfont-webfont.eot'); 
    } 

@font-face { 
    font-family: 'ProximaNovaBold'; 
    src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAF+8ABMAAAAArzAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcYT+YZ0dERUYAAAHEAAAALQAAADIC+wHsR1BPUwAAAfQAAAf7AAAURoqljoZHU1VCAAAJ8AAAACAAAAAgbJF0j09TLzIAAAoQAAAAWwAAAGB+FsNBY21hcAAACmwAAAGdAAAB+uY47ZljdnQgAAAMDAAAADoAAAA..alotmorecharacters...FDmYlYoTkE8HdsTFF2cwU74AAU/lecUAAA==) format('woff'), 
     url('proximanova-bold-webfont-webfont.ttf') format('truetype'), 
     url('proximanova-bold-webfont-webfont.svg#ProximaNovaBold') format('svg'); 
    font-weight: normal; 
    font-style: normal; 

} 
+0

Use 'application/font-woff', o obtendrá [Recurso interpretado como Fuente pero transferido con el tipo de aplicación MIME/x- font-woff] (http://stackoverflow.com/questions/16704967/resource-interpreted-as-font-but-transferred-with-mime-type-application-x-font-w) advertencias. –

1

Usted puede conseguir que funcione mediante el Webfont-Loader, desarrollado por Google y Typkit:

Se añade algo de sobrecarga, pero le da también un mayor control sobre la fuente de carga (como las clases que le permiten configurar diferentes estilos mientras las fuentes aún no se han cargado). Tal vez vale la pena intentarlo, setup for your own css seems to be simple.

+0

Dado que las fuentes no se cargarán usando mi propio CSS, dudo que se carguen usando el cargador webfont. Sin embargo, en CSS normale también puedo configurar una fuente de respaldo. De todos modos, analizaré esto, nunca lo sabrás. Gracias –

+0

Lástima, no funcionó :(IE sigue siendo un poco b * tch :( –

3

que tenían exactamente el mismo comportamiento con IE y https. IE intentó cargar 3 de las 4 fuentes, pero tan pronto como el servidor entregó el recurso, IE se separó y se movió a la siguiente fuente. Finalmente, no se cargó ninguna fuente y el sitio parecía horrible. En mi caso, el encabezado http "pragma = no-cache" era lo que confundía IE. Después de eliminarlo de la respuesta, todo funcionó sin problemas.Véase también mi entrada de blog que explica el truco con JBoss y Contracorriente: Blog

ACTUALIZACIÓN:

Mientras tanto abrí un error en Microsoft Connect: https://connect.microsoft.com/IE/feedbackdetail/view/992569/font-face-not-working-with-internet-explorer-and-http-header-pragma-no-cache

Si usted quiere que se soluciona el problema, por favor vote por el error.

4

Definitivamente teniendo el mismo problema. Una combinación de IE (en nuestra versión caso 11/Trident 7) error se produce cuando todas las condiciones se encuentran:

HTTPS, encabezado no-cache

En ciertos dominios que se administran por separado, esto no es un problema fácil de solución

+0

una posible forma de evitar el problema es servir a los ficheros de un CDN – echen

+2

Gracias usted! estaba perdido mucho tiempo para este problema. usted es salvo mi tiempo! para solucionar, he configurado en .htaccess como cabecera de set "max Cache-control -age = 604800, public " Header set Pragma" " –

+0

Sí, podría resolver el problema utilizando el proxy nginx para ocultar los pragma y los encabezados de control de caché generados por Spring-boot que impiden el almacenamiento en caché en el br owser: [link] (http://stackoverflow.com/a/43093451/1767316) – user1767316

2

solución de trabajo para Apache/2.2.15 es agregar .htaccess Sus evita el almacenamiento en caché archivos de fuentes, incluso para https

<FilesMatch "\.(woff)$"> 
    Header unset Cache-control 
</FilesMatch> 

<FilesMatch "\.(eot)$"> 
    Header unset Cache-control 
</FilesMatch> 
+0

[link] (Usando nginx): ocultando ambos Cache-control y Pragma: no-cache – user1767316

0

no se establece la Vary encabezado de solicitud a https

Ninguna fuente de carga

Vary:Accept-Encoding,https 

Obras

Vary:Accept-Encoding 

misma respuesta here.

Cuestiones relacionadas