2017-05-09 89 views
1

我在尝试加载字体真棒字体时面临访问控制源问题。这是在Chrome浏览器控制台中记录的错误消息。Apache访问控制允许woff2文件类型的起源问题

Access to Font at 'https://example.com/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0' from origin 'https://example2.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://example2.com' is therefore not allowed access. 

而且我更新了apache2服务器httpd.conf并启用了标头。

<IfModule mod_mime.c> 
    AddType application/font-woff2   .woff2 
</IfModule> 

    <FilesMatch "\.(ttf|ttc|otf|eot|woff2|woff|font.css|css|js)$"> 
    <IfModule mod_headers.c> 
     Header set Access-Control-Allow-Origin "*" 
    </IfModule> 
    </FilesMatch> 

而且我也尝试了与.htaccess文件相同的设置,但结果相同。这有点奇怪,因为我仅面向woff2文件扩展名。

+0

包装指令中'If​​Module'总是会提出这个问题:“这个模块真的启用了吗?”。如果没有'IfModule',那么日志文件中至少会出现一些服务器错误。 –

+0

@OlafDietsche是模块已启用。我真的无法修复它在服务器端,但下面的技巧解决了这个问题。 –

回答

0

如何使用服务器脚本,而不是物理字体文件

<style type="text/css"> 
@font-face { 
    font-family: 'OpenSans'; 
    src: url('path/to/fonts.php') format('woff2'); 
} 
html, body{ 
    font: normal 16px OpenSans, sans-serif; 
} 
</style> 

如何解决跨域@字体面的问题与PHP

<?php 
// fonts.php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/font-woff2"); 
echo @file_get_contents("path/fontawesome-webfont.woff2"); 
?> 

Reference