从主站点和子域跨域@font面



我在StackOverflow上检查了一些其他解决方案,但没有找到我需要的答案,所以我问这个。

我有一个网站"subdomain.myexamplesite.com"和我的主要网站"myexamplesite.com"。
我将我的 CSS 托管在"subdomain.myexamplesite.com"的"myexamplesite.com"上,因为我想将所有 CSS 文件放在一个地方。

我对以这种方式托管 CSS 文件的跨域问题没有任何问题。 一切都很棒。

我现在遇到的问题是,我正在使用@font面并试图将其带到我的子域站点。但是我收到一个跨域错误:


来自源"https://www.myexamplesite.com"的字体已被跨源资源共享策略阻止加载:请求的资源上不存在"访问控制-允许源"标头。因此,不允许访问源"https://subdomain.myexamplesite.com"。


主要网站是托管在IIS服务器上的.Net网站(确切地说是Umbraco CMS)。 另一个站点是不同的 .Net 站点,但仍承载在 IIS 上。由于它是IIS,我认为.htaccess文件不适用于我的情况。我在我的主网站上有一个跨域.xml允许从我的子域访问,以确保万无一失。 但这行不通。

我在子域站点的 CSS 中正确引用了字体文件,否则我认为我不会收到字体跨域错误。如果有可以在我的主域上托管字体并允许子域站点使用相同的字体,是否有人有任何建议。

有什么想法吗?

对于字体文件,您需要设置 Access-Control-Allow-Origin http 标头。

要在所有文件上设置它,请将其添加到 web.config

<httpProtocol>
  <customHeaders>
    <remove name="Cache-Control" />
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
  </customHeaders>
</httpProtocol>

或者更具体地说,将类似这样的内容添加到<system.webServer>下方的 web.config 中,并设置字体文件的位置路径。

    <location path="static/fonts/source-sans-pro-regular.ttf" inheritInChildApplications="false">
        <system.webServer>
          <httpProtocol>
            <customHeaders>
              <add name="Access-Control-Allow-Origin" value="*" />
            </customHeaders>
          </httpProtocol>
        </system.webServer>
  </location>

查看跨域字体

和 59378-集中式-本布拉科-7-仪表板-访问控制-允许-来源

和访问控制允许来源多个源域

和字体-脸-字体-仅在自己的域上工作

相关内容

  • 没有找到相关文章

最新更新