绕过Firefox和IE的webfonts跨域策略

时间:2013-12-20 17:04:26

标签: internet-explorer google-app-engine firefox python-2.7 webfonts

我使用Google App Engine设置了一个静态服务器,因此我可以存储字体文件,可下载的文件(例如zip和其他应用程序文件)以及Chrome,Safari和Opera,它的工作效果非常好,但是Firefox和IE我的网页字体出现跨域“不允许”的错误。我正在使用Python 2.7运行时,并找到一些似乎不起作用的方法。

第一个是在我的应用程序的根目录中设置一个crossdomain.xml文件(但是我不知道我是否应该使用Python文件或我的{我为我的应用程序配置/配置它} {1}}因为我还没有看到它的一个例子)但是无论如何,这是我的代码:

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

但是当我重新部署我的静态服务器时,我仍然会在Firefox和IE中得到错误。我对Python的经验(以及后期,真的)几乎没有,所以如果我做错了或忘记了重要的部分,请原谅我。如有必要,我可以为我的<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> app.yaml提供代码(但这非常简单)。我正在积极地使用main.py来路由app.yamlcrossdomain.xml,并且在找到并正确路由页面时,它仍然没有在FF和IE中显示webfonts。 / p>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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文档。