我在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-仪表板-访问控制-允许-来源
和访问控制允许来源多个源域
和字体-脸-字体-仅在自己的域上工作