8

外部ページを表示する iframe を含むページがあります。外部ページは、サーバーから CSS ファイルをダウンロードするように構成されています。

CSS で、@font-faceセレクターを追加しました。

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

これにより、Chrome ではフォントが正常にダウンロードされて表示されますが、Firefox ではフォントがダウンロードされますが、使用は拒否されます。少し調査を行うと、この問題がクロスオリジン ポリシーの問題であることがわかります。ここで言及されている解決策の1つ:

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 または他の方法を使用して、これを行う方法はありますか?

4

1 に答える 1

13

web.configのlocation要素を使用して、構成ルールを特定のディレクトリまたはファイルに制限することで、同様のことを実現できます。例えば:

<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">

この質問への回答には、さらにいくつかの例がありlocationます。

于 2014-10-30T22:45:27.567 に答える