.htaccess 字体未加载-CORS表示标头不包含访问控制,但存在

.htaccess 字体未加载-CORS表示标头不包含访问控制,但存在,.htaccess,cors,cross-domain,.htaccess,Cors,Cross Domain,问题是:我使用的是从一个站点生成的html,它被推送到另一个站点(不同的域)。除了字体(主要用于图标)未显示外,所有操作都正常。我收到如下所述的CORS错误 我已将以下代码添加到存储字体的网站上的.htaccess文件中,允许跨任何域访问字体: <FilesMatch ".(eot|ttf|otf|woff)"> Header set Access-Control-Allow-Origin "*" </FilesMatch> Access Origin响应告诉我

问题是:我使用的是从一个站点生成的html,它被推送到另一个站点(不同的域)。除了字体(主要用于图标)未显示外,所有操作都正常。我收到如下所述的CORS错误

我已将以下代码添加到存储字体的网站上的.htaccess文件中,允许跨任何域访问字体:

<FilesMatch ".(eot|ttf|otf|woff)">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>
Access Origin响应告诉我字体应该是可读的,但我仍然从请求的网站收到此错误:

访问“从”处的字体 源“”已被CORS策略阻止:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 进入

想法或建议

编辑:这是一个无法加载图标字体的测试页面的错误提示。

基本正确:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET"

您需要
添加
标题而不是
设置
。我还想添加一个方法来确保。由其他网站购买的高级字体可能被其他网站滥用。这就是浏览器级编码复杂化的原因。形象不会受到这样的问题。字体相关CORS因字体类型、浏览器和bug而变得复杂。除非您使用的是付费来源的pull CDN或已知的字体提供商(免费或付费),否则从自己的服务器上提供字体是可行的,以确保字体加载到所有浏览器、所有设备上。值得一读:

  • ,
  • ,
  • ,
  • ,
  • 以上资源中有三个选项可以为您提供正确答案。您需要从不同的用户代理和设备的WebGetest.org进行测试,并尝试观看屏幕截图的视频

    一:


    确保在重新启动之前运行Apache configtest。您可能需要激活某些模块

    我不想因为这个答案而受到赞扬,但这对我来说很有效,多亏了这个家伙:

    在.htaccess文件中添加以下行,并将其放入(字体)文件夹中:

    <ifmodule mod_headers.c="">
       SetEnvIf Origin "^(.*\.domain\.com)$" ORIGIN_SUB_DOMAIN=$1
       Header set Access-Control-Allow-Origin "%{ORIGIN_SUB_DOMAIN}e" env=ORIGIN_SUB_DOMAIN
       Header set Access-Control-Allow-Methods: "*"
       Header set Access-Control-Allow-Headers: "Origin, X-Requested-With, Content-Type, Accept, Authorization"
    </ifmodule>
    
    
    SetEnvIf Origin“^(.*\.domain\.com)$”Origin\u SUB\u domain=$1
    头集访问控制允许源“%{Origin\u SUB\u DOMAIN}e”env=Origin\u SUB\u DOMAIN
    标题集访问控制允许方法:“*”
    标题集访问控制允许标题:“来源、X请求、内容类型、接受、授权”
    
    请-如果你投了反对票,请说明你这样做的原因。不要掷骰子。。。仍在获取错误:
    Access to Font at'https://intranet.newmanu.edu/landing/pages/danatest/fonts/flatpack.woff?tzy7cr“起源”http://response.newmanu.edu'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头。起源'http://response.newmanu.edu因此,不允许访问。
    …即使标头中的响应显示:
    curl-Ihttps://intranet.newmanu.edu/landing/fonts/flatpack.woff?tzy7cr HTTP/1.1 200正常服务器:nginx日期:Thu,2017年6月29日14:43:51 GMT内容类型:文本/普通内容长度:142020连接:keep alive X-Accel-Version:0.01上次修改:2017年6月20日星期二22:03:28 GMT ETag:“1a3c9c-22ac4-5526b6be0b722”接受范围:字节X-Powered-By:PleskLin访问控制允许来源:*访问控制允许方法:GET
    是否启用了标头mod?(a2enmod标头)更改后服务器是否重新启动(或至少重新加载)?
    SetEnvIf Origin "https?://(.*\.(mozilla|allizom)\.(com|org|net))" CORS=$0
    Header set Access-Control-Allow-Origin %{CORS}e env=CORS
    
    <FilesMatch "\.(ttf|woff|eot)$">
        Header append vary "Origin"
        ExpiresActive On
        ExpiresDefault "access plus 1 year"
    </FilesMatch>
    
    <FilesMatch "\.(ttf|otf|eot|woff)$">
            SetEnvIf Origin "^http(s)?://(.+\.)?anotherwebsite\.com$" AccessControlAllowOrigin=$0
            Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    </FilesMatch>
    
    <FilesMatch "\.(ttf|otf|eot|woff)$">
        <IfModule mod_headers.c>
            SetEnvIf Origin "http(s)?://(www\.)?(anotherwebsite.com|cdn.anotherwebsite.com|blahblah.anotherwebsite.com)$" AccessControlAllowOrigin=$0
            Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
        </IfModule>
    </FilesMatch>
    
    AddType application/vnd.ms-fontobject    .eot
    AddType application/x-font-opentype      .otf
    AddType image/svg+xml                    .svg
    AddType application/x-font-ttf           .ttf
    AddType application/font-woff            .woff
    AddType application/font-woff2           .woff2
    
    <ifmodule mod_headers.c="">
       SetEnvIf Origin "^(.*\.domain\.com)$" ORIGIN_SUB_DOMAIN=$1
       Header set Access-Control-Allow-Origin "%{ORIGIN_SUB_DOMAIN}e" env=ORIGIN_SUB_DOMAIN
       Header set Access-Control-Allow-Methods: "*"
       Header set Access-Control-Allow-Headers: "Origin, X-Requested-With, Content-Type, Accept, Authorization"
    </ifmodule>