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个小时才能奖赏赏金,但是,我会在那之后。 –