3

我使用Google App Engine設置了一個靜態服務器,這樣我就可以存儲字體文件,可下載文件(例如zip和其他應用程序文件)以及Chrome,Safari和Opera它的工作效果很好,但是在Firefox和IE中,我的網頁字體出現跨域「不允許」錯誤。我正在使用Python 2.7運行時,並且發現了幾個似乎不起作用的方法。繞過Firefox和IE的網頁字體跨域策略

第一個是在我的應用程序的根目錄中創建一個crossdomain.xml文件(但我不知道是否應該使用Python文件或我的app.yaml爲我的應用程序路由/配置它,就像我擁有的​​一樣還沒有看到它的一個例子),但不管怎麼說,這是我的代碼:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all"/> 
    <allow-access-from domain="*" to-ports="*" secure="false"/> 
    <allow-http-request-handlers-from domain="*" headers="*" secure="false"/> 
</cross-domain-policy> 

第二個是剛剛建立一個普通的.htaccess文件(但同樣,我不知道如何配置/路由它,這可能是唯一的問題)。下面是代碼:

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
    Header set Access-Control-Allow-Methods "GET" 
    Header set Access-Control-Allow-Credentials "false" 
</IfModule> 

但是,當我重新部署我的靜態服務器,我仍然可以在Firefox和IE的錯誤。我對Python的使用經驗(和後端時期)幾乎沒有任何關係,所以如果我做錯了或忘記了一個重要部分,請原諒我。如果需要,我可以提供我的app.yamlmain.py的代碼(但它非常簡單)。我正在積極使用app.yaml來路由crossdomain.xml.htaccess,並且,當頁面找到並路由正確時,它仍然不會在FF和IE中顯示網頁字體。

任何幫助將不勝感激。

回答

3

服務於一個crossdomain.xml文件從App Engine的靜態文件,添加以下到您app.yaml,下handlers:鍵:

handlers: 
- url: /crossdomain.xml 
    static_files: static/crossdomain.xml 
    upload: static/crossdomain.xml 

幾乎肯定其他url:條目當然handlers:項下, 。

url:關鍵必須/crossdomain.xmlstatic_files:條目應該是實際文件的相對路徑,請將其存儲在static/目錄中。你也必須包括一個upload:鍵告訴上傳者什麼文件正在服務。

請參閱Static file pattern handlers文檔。

+0

謝謝!這工作。我有類似的東西,但我可能沒有做一件小事。 :P這是對我缺乏經驗的反響。顯然,我必須等待19個小時才能獎賞賞金,但是,我會在那之後。 –