【问题标题】:@font-face NOT working when accessing "www.domain.tld" but WORKING with "domain.tld"@font-face 访问“www.domain.tld”但使用“domain.tld”时不起作用
【发布时间】:2014-10-05 22:07:30
【问题描述】:

问题

如果我通过www.domain.tld 访问我的网站,则忽略@font-face 规则。 如果我去domain.tld(没有'www'部分)@font-face被视为。 所有其他 css 格式在这两种情况下都可以正常工作。

CSS

@font-face {
    font-family: 'font-name';
    src: url(../fonts/font-name.eot);
    src: local("font-name"), url(../fonts/font-name.ttf) format("truetype");
}

姜戈

在我的 Django settings.py:

STATIC_ROOT = '/var/www/domain.tld/static/'
STATIC_URL = 'http://domain.tld/static/'

如果我将其更改为 STATIC_URL = 'http://www.domain.tld/static/'@font-face 规则将在 domain.tld 上被忽略并在 www.domain.tld 上被视为,所以这是相反的行为。

阿帕奇

<VirtualHost *:80>
    CustomLog /var/log/apache2/domain.tld.log combined

    ServerName domain.tld
    ServerAlias www.domain.tld

    WSGIScriptAlias / /var/www/domain.tld/wsgi


    Alias /static/ /var/www/domain.tld/static/

    Alias /robots.txt /var/www/domain.tld/static/robots.txt
    Alias /favicon.ico /var/www/domain.tld/static/img/favicon.ico
</VirtualHost>

【问题讨论】:

  • 为什么使用带有 FQDN 的 STATIC_URL?只需使用 '/static/' 并让 Apache 处理其余部分。
  • 试试 url 引号src: url('../fonts/font-name.eot');
  • 是的,因为浏览器认为即使从不同域加载字体也是一个坏主意(跨站点)。
  • @petkostas 因为我认为它是一样的。嗯,我测试了它,现在它似乎工作了,但我不知道为什么(完全不同的域也应该工作)......此外,所有其他 css 规则在这两种情况下都被考虑。有人解释一下吗?
  • @petkostas 谢谢,有道理!

标签: html css django apache


【解决方案1】:

跨域 Web 字体嵌入被某些浏览器拒绝(不确定它是否适用于全部或部分),我相信这应该保持原样(安全方面)。 除此之外,您的 STATIC_URL 或 MEDIA_URL 都不需要 FQDN,您的 Web 服务器负责提供静态内容,该 url 用于为资产加载提供可识别的 url。因此,如果您从子域访问您的网站,如果您的静态文件中有 FQDN,则并非一切都会正常工作,请删除 FQDN 并使用您想要的目录名称,这样还可以更轻松地将设置移植到沙箱或生产系统具有多个子域。 您还可以进一步检查这个 stackoverflow 问题(提供了一些解决方案,但请注意,我不知道它是否有效,因为我从未遇到过这样的问题):

@font-face fonts only work on their own domain

【讨论】:

  • 感谢详细解释!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 2023-03-25
  • 2012-01-05
  • 1970-01-01
  • 2014-05-19
  • 2013-01-04
  • 2014-09-16
相关资源
最近更新 更多