为Azure CDN上的网站启用CORS以托管字体

时间:2015-04-21 03:38:56

标签: asp.net asp.net-mvc azure fonts cdn

我有一个Azure网站(Asp.net MVC),其中包含字体(例如字体 - 真棒,字形),并且可以在自定义域中使用,例如www.mywebsite.com。

我还设置了一个Azure CDN,其源主机指向网站(而不是blob存储)。另外,我正在为cdn使用自定义域名,例如“cdn.mywebsite.com”。

我遇到的问题是浏览器拒绝下载字体,因为未启用CORS。我已经找到了在Azure blob存储上启用CORS的方法,但我真的更喜欢通过将CDN指向网站来实现这项工作。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

假设您的web.config system.webserver部分中有一些基本的CDN重写规则,您还可以添加一些出站规则来为CDN请求启用CORS ......

<rewrite>
    <outboundRules>
        <rule name="Set Access-Control-Allow-Origin Header" preCondition="Origin header present">
            <match serverVariable="RESPONSE_Access-Control-Allow-Origin" pattern="(.*)" />
            <action type="Rewrite" value="*" />
        </rule>
        <preConditions>
            <preCondition name="Origin header present" logicalGrouping="MatchAll">
                <add input="{HTTP_ORIGIN}" pattern="(.+)" />
                <add input="{HTTP_X_ORIGINAL_URL}" pattern="^/cdn/(.*)$" />
            </preCondition>
        </preConditions>
    </outboundRules>
    <rules>
        <rule name="Rewrite CDN" stopProcessing="true">
            <match url="^cdn/(.*)$" />
            <action type="Rewrite" url="{R:1}" />
        </rule>
    </rules>
</rewrite>

此出站规则通过Azure CDN向每个包含非空Access-Control-Allow-Origin: *请求标头的请求添加Origin:响应标头。

相关问题