我在StackOverflow上检查了一些其他解决方案,但没有找到我需要的答案,所以我问这个。
我有一个网站' subdomain.myexamplesite.com'和我的主要网站' myexamplesite.com' 我将我的CSS托管在' myexamplesite.com'对于' subdomain.myexamplesite.com'因为我想将所有CSS文件放在一个地方。
我没有遇到以这种方式托管CSS文件的跨域问题。一切都很棒。
我现在遇到的问题是,我正在使用@ font-face并尝试将其转到我的子域网站。但是我收到了跨域错误:
源自' https://www.myexamplesite.com的字体'已被跨源资源共享策略阻止加载:No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' https://subdomain.myexamplesite.com'因此不允许访问。
主要网站是在IIS服务器上托管的.Net网站(确切地说是Umbraco CMS)。另一个站点是一个不同的.Net站点,但仍然在IIS上托管。 由于它是IIS,我不认为.htaccess文件适用于我的情况。 我的主网站上有一个crossdomain.xml,允许从我的子域进行访问以确保。但这不起作用。
我正在CSS中为我的子域网站正确引用字体文件,否则我不会认为我会收到字体跨域错误。 有没有人有任何建议,如果可以在我的主域上托管字体,并允许子域网站使用相同的字体。
有什么想法吗?
答案 0 :(得分:1)
对于字体文件,您需要设置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-Centralized-Umbraco-7-Dashboards-Access-Control-Allow-Origin