@ font-face - CSS字体的奇怪请求URL

时间:2013-11-28 01:49:15

标签: html css wordpress fonts font-face

这是一个愚蠢的问题,我假设有一个简单的解决方案。我正在使用Wordpress主题中的网络字体 - 我正在处理的网站有两个可用于访问同一网站的域名。

在我的CSS中,我使用font-squirrel格式来声明字体:

@font-face {
    font-family: 'Oswald';
    src: url('oswald-regular-webfont.eot');
    src: url('oswald-regular-webfont.eot?#iefix') format('embedded-opentype'),
         url('oswald-regular-webfont.woff') format('woff'),
         url('oswald-regular-webfont.ttf') format('truetype'),
         url('oswald-regular-webfont.svg#Oswald') format('svg');
    font-weight: normal;
    font-style: normal;
}

当我访问其中一个域时这很好用,但是当我通过其他域访问该站点时,该字体无法加载,因为它被认为是“跨站点”请求。基本上当我去domain1.com时,请求看起来像这样: http://www.domain1.com/fonts/oswald-regular-webfont.ttf

但是当我去domain2.com时,请求STILL看起来就像那样。为什么?由于我使用的是相对路径,因此domain2.com不应该请求: http://www.domain2.com/fonts/oswald-regular-webfont.ttf

任何人都知道我搞砸了什么? Wordpress是否以某种方式将完整路径注入CSS?

注意:它适用于Chrome,但不适用于Firefox或IE10。 Chrome具有相同的奇怪网址行为,不同之处仅在于Chrome允许跨网站请求。

1 个答案:

答案 0 :(得分:3)

可能会发生这种情况,因为您正在使用get_stylesheet_directory_uri()或类似内容获取CSS文件的路径,然后在wp_enqueue_style()调用中使用该文件。

当这个呈现给浏览器时,页面将包含文件的完整路径,而不是相对文件,这意味着字体文件相对于另一个网站,因此它是跨站点。