2016-02-26 32 views
1

我在StackOverflow上檢查了一些其他解決方案,但沒有找到我需要的答案,所以我問了這個問題。從主站點和子站點跨域@ font-face

我有一個網站'subdomain.myexamplesite.com'和我的主要網站'myexamplesite.com'。
我在'myexamplesite.com'上爲'subdomain.myexamplesite.com'託管我的CSS,因爲我想把所有的CSS文件放在一個地方。

我沒有任何問題,通過這種方式來託管CSS文件的跨域問題。一切都很好。

我現在的問題是,我正在使用@ font-face並試圖將其提交到我的子域網站。但是,我得到一個跨域錯誤:


從原點「https://www.myexamplesite.com」字體已加載阻止跨來源資源共享政策:否「訪問控制允許來源」標頭出現在請求的資源。因此,'https://subdomain.myexamplesite.com'不允許訪問。


主要網站是一個.NET網站(CMS一把umbraco是準確的)託管在IIS服務器上。另一個站點是一個不同的.Net站點,但仍然託管在IIS上。 由於它是IIS,我不認爲.htaccess文件適用於我的情況。 我在我的主網站上有一個crossdomain.xml,允許從我的子域進行訪問。但那不行。

我正在CSS中爲我的子域網站正確引用字體文件,否則我不認爲我會得到字體跨域錯誤。 有沒有人有任何建議,如果有可能在我的主域上承載字體,並允許子域網站使用這些相同的字體。

任何想法?

回答

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> 

cross-domain-fonts

59378-Centralized-Umbraco-7-Dashboards-Access-Control-Allow-Origin

access-control-allow-origin-multiple-origin-domains

font-face-fonts-only-work-on-their-own-domain

+0

揚嗨,感謝您的指針。這個配置設置會在子域配置或主機配置上進行嗎?或者兩者兼而有之? – ClosDesign

+0

在託管字體文件的網站上,您的情況是主網站。如果你有一個負載平衡器或其他紅外線,也可以在除web.config –

+0

之外的其他地方添加標題。感謝您的答覆。將試一試,讓你知道,如果作品,當然會標記爲解決方案。非常感激。 – ClosDesign