2012-07-24 8 views
7

Ich habe eine Seite mit einem iframe, der eine externe Seite zeigt. Die externe Seite ist so konfiguriert, dass eine CSS-Datei von meinem Server heruntergeladen werden kann.Wie füge ich in ASP.NET einen CORS-Header nur für TTF-Dateien hinzu?

Im CSS, habe ich einen @font-face Selektor:

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

Diese Downloads und zeigt die Schrift fein in Chrome, aber in Firefox, lädt es die Schrift, aber weigert sich, es zu benutzen. Ein wenig Forschung zeigt, dass dieses Problem ein ursprungsübergreifendes politisches Problem ist. Eine der Lösungen hier erwähnt:

http://enable-cors.org/

Ist die CORS-Header zu ermöglichen. Allerdings stellte die Lösung ist standortweit:

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

Während ich es nur für nur .TTF Dateien aktivieren möchte. Gibt es eine Möglichkeit, dies zu tun, entweder mithilfe eines HttpHandler oder einer anderen Methode?

Antwort

8

Sie können etwas Ähnliches erreichen, indem Sie location element in web.config verwenden, um Konfigurationsregeln auf ein bestimmtes Verzeichnis oder eine bestimmte Datei zu beschränken. Beispiel:

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

Obwohl Sie CORS möglicherweise für alle Schriftarten aktivieren möchten, z. <location path="fonts">.

Die Antworten auf this question hat ein paar mehr Beispiele für location.