2012-07-24 3 views
7

Ho una pagina con un iframe che mostra una pagina esterna. La pagina esterna è configurata per scaricare un file CSS dal mio server.In ASP.NET, come posso aggiungere un'intestazione CORS solo per i file TTF?

Nel CSS, ho aggiunto un selettore @font-face:

@font-face { 
    font-family: "Special Font"; 
    src: url("<%= Request.Url.GetLeftPart(UriPartial.Authority) + "/fonts/specialfont.ttf" %>"); 
} 

Questo download e mostra la multa di carattere in Chrome, ma in Firefox, scarica il tipo di carattere, ma si rifiuta di usarla. Fare un po 'di ricerche mostra che questo problema è un problema di politica inter-origine. Una delle soluzioni qui menzionati:

http://enable-cors.org/

è quello di consentire l'intestazione CORS. Tuttavia, la soluzione ha fornito sia a livello di sito:

<?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
     <system.webServer> 
      <httpProtocol> 
       <customHeaders> 
        <add name="Access-Control-Allow-Origin" value="*" /> 
       </customHeaders> 
      </httpProtocol> 
     </system.webServer> 
</configuration> 

Mentre mi piace solo per abilitarla solo per .TTF file. C'è un modo per farlo, usando un HttpHandler o qualche altro metodo?

risposta

8

È possibile ottenere qualcosa di simile utilizzando il location element nel web.config per limitare regole di configurazione per una particolare directory o file. Ad esempio:

<configuration> 
    <location path="fonts/specialfont.ttf"> 
    <system.webServer> 
     <httpProtocol> 
      <customHeaders> 
      <add name="Access-Control-Allow-Origin" value="*" /> 
      </customHeaders> 
     </httpProtocol> 
    </system.webServer> 
    </location> 
</configuration> 

Sebbene si desideri abilitare CORS per tutti i tipi di carattere, ad es. <location path="fonts">.

Le risposte a this question hanno un paio di altri esempi di location.

Problemi correlati