簡體   English   中英

在Azure CDN上為Ubuntu 14.0.4上的Wordpress網站托管字體? CORS問題

[英]Hosting fonts on Azure CDN for a Wordpress site on Ubuntu 14.0.4? CORS issues

我有一個Azure存儲帳戶,其CDN設置有5個指向該存儲帳戶的子域(cdn1.domain.com,cdn2.domain.com,-cdn5.domain.com)。

我使用W3 Total Cache插件來提高性能,尤其是在Azure CDN上托管靜態文件。 該插件可以很好地上傳所有文件,該站點可以訪問圖像,css,腳本等...沒問題。 但是,不會加載字體。

獲取以下錯誤:

跨域資源共享策略已阻止加載來自源站點“ http://cdn1.domain.com ”的字體:所請求的資源上沒有“ Access-Control-Allow-Origin”標頭。 因此,不允許訪問來源“ http://domain.com ”。

wordpress網站在Ubuntu 14.0.4上使用Apache托管在DigitalOcean上。 我在apache2.conf中添加了以下內容:

<FilesMatch ".(eot|ttf|otf|woff)">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>

那沒有用。 經過一番研究后,Azure似乎默認情況下不允許使用CORS,因此我創建了一個C#應用程序來更改存儲帳戶上的CORS規則 ,如下所示:

var storageAccount =
    new CloudStorageAccount(
        new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials("accountname", "accountkey"), true);
var blobClient = storageAccount.CreateCloudBlobClient();
var blobServiceProperties = new ServiceProperties
{
    HourMetrics = null,
    MinuteMetrics = null,
    Logging = null,
};
blobServiceProperties.Cors.CorsRules.Add(new CorsRule
{
    AllowedHeaders = new List<string> { "*" },
    AllowedMethods = CorsHttpMethods.Get,
    AllowedOrigins = new List<string> { "*" },
    ExposedHeaders = new List<string> { "*" },
    MaxAgeInSeconds = 3600 // 30 minutes 
});

blobClient.SetServiceProperties(blobServiceProperties);

基本上,這應該向所有來源開放存儲空間...但是仍然會出現相同的錯誤。 因此,我認為這可能是某種形式的緩存。 因此,我將所有文件重新上傳到同一容器中,然后等待了大約6個小時。

該錯誤仍然存​​在。 我覺得我已經嘗試了所有必須完成的工作,以便從Azure CDN加載字體。

我錯過了什么?

默認情況下,大多數CDN的CORS僅在Access-Control-Allow-Origin標頭設置通配符的情況下才起作用。 通配符的情況是有效的,因為CDN將為它獲得的第一個請求緩存響應。 對於客戶需要允許特定來源的情況,通常需要在CDN上設置其他配置以啟用此功能。 從今天通過Azure管理門戶提供的Azure CDN功能中,您需要為CDN終結點啟用查詢字符串設置,然后對來自每個允許域的請求使用唯一的查詢字符串。 啟用查詢字符串設置將導致CDN為每個唯一查詢字符串緩存一個單獨的對象。 對於Azure CDN的非常大的客戶,有一個補充門戶,它具有更復雜的功能-但目前僅對有限數量的客戶可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM