2012-07-24 10 views
7

私は、外部ページを示すiframeを持つページを持っています。外部ページは、私のサーバーからCSSファイルをダウンロードするように設定されています。ASP.NETでは、TTFファイルのみにCORSヘッダーを追加するにはどうすればよいですか?

CSSで

、私は@font-faceセレクタを追加しました:

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

このダウンロードとChromeでフォント罰金を示しているが、Firefoxでは、それはフォントをダウンロードし、それを使用することを拒否します。少しの研究をすることで、この問題はクロスオリジンの政策課題であることが示されています。ここで言及した解決策のひとつ:

http://enable-cors.org/

は、CORSヘッダーを有効にすることです。しかし、それが提供するソリューションは、サイト全体である:

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

私だけだけ.TTFファイルのためにそれを有効にするには、希望のに対し。これを行う方法はありますか?HttpHandlerまたは他の方法を使用する方法がありますか?

答えて

8

web.configのlocation elementを使用して設定ルールを特定のディレクトリまたはファイルに制限することで、同様の効果を得ることができます。例:

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

すべてのフォントでCORSを有効にすることもできますが、 <location path="fonts">

this questionへの回答には、locationという2つの例があります。