字体跨域解决办法

原文地址: font-face跨域办法
font-face是现在比较流行的技术,可以矢量化你的图标,更改颜色方便等等。如果你想更进一步了解他,请点击这里(CSS3 icon font完全指南)今晚有网友问到 font-face 跨域在 nginx 下如何配置。
所以在这里补充一下内容:
原因:
浏览器(不仅仅是Firefox)对字体文件有加载限制,也就是说不允许你随便加载别人的字体,防止他人盗用字体,只有在服务器端允许访问的情况下才能够加载指定的字体文件
解决办法:
1、把字体文件放在你网站指定目录下。
2、给字体文件的http头里面添加 Access-Control-Allow-Origin 属性,以控制指定域引用你的字体文件。
nginx

  1. server {
  2. ... # Fix @font-face cross-domain restriction
  3. location ~* \.(ttf|ttc|otf|eot|woff|font.css) {
  4. add_header Access-Control-Allow-Origin "http://yoursite.com";
  5. }
  6. ...
  7. }

nginx(多域名禁止访问)

  1. server {
  2. ...
  3. # Fix @font-face multi cross-domain restriction
  4. location ~* \.(ttf|ttc|otf|eot|woff|font.css) {
  5. if ($http_origin ~* "^(https|http)?:\/\/.*\.yourdomain\.com" ) {
  6. add_header Access-Control-Allow-Origin $http_origin;
  7. }
  8. }
  9. ...
  10. }

apache

  1. <FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css)$">
  2. <IfModule mod_headers.c>
  3. Header set Access-Control-Allow-Origin "http://yoursite.com"
  4. </IfModule>
  5. </FilesMatch>

apache(多域名)

  1. SetEnvIf Origin "^http(s)?://(.+\.)?(domain\.org|domain2\.com)$" origin_is=$0
  2. Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is

3、添加mine

  1. AddType application/vnd.ms-fontobject .eot
  2. AddType font/ttf .ttf
  3. AddType font/otf .otf
  4. AddType application/x-font-woff woff

[转] font-face字体跨域 / Ajax 跨域办法 - 图1

跨域时候的参数记录

mac/nginx 下支持 add_header 选项

  1. add_header Access-Control-Allow-Origin *;
  2. add_header Access-Control-Allow-Headers X-Requested-With,X-ACCESS-TOKEN,Content-Type;
  3. add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

安装 **nginx-extra** 版本时候的参数

  1. more_add_headers 'Access-Control-Allow-Origin *';
  2. more_add_headers 'Access-Control-Allow-Headers X-Requested-With,X-ACCESS-TOKEN,Content-Type';
  3. more_add_headers 'Access-Control-Allow-Methods GET,POST,OPTIONS';